【问题标题】:setTimeOut Inconsistency - Node,jssetTimeOut 不一致 - 节点,js
【发布时间】:2018-08-28 08:05:03
【问题描述】:

我使用 setTimeOut 设置了一个函数,在一定时间后在我的后端执行。奇怪的是,如果我将超时设置为小于 60000 毫秒,代码就会执行。任何大于或等于的值,则 setTimeout 中的代码不会运行。网上搜索后,我认为可能与“The This Problem”有关,如下链接所示:

https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout#The_this_problem

根据那篇文章,我的印象是我需要使用.bind,但我真的不太熟悉这个并且正在努力获得正确的语法。

我的问题是,我应该使用.bind() 来解决这个问题吗?如果是,将它添加到代码中的正确方法是什么?

作为当前示例,这里是我的代码版本的样子。使用此代码,具有 6000 毫秒的 setTimeout 可以工作,但具有 60,000 毫秒的代码不能。很高兴提供更多信息。

//在前端

userComplete(a, b);

//在后台

export function userComplete (a,b) {

setTimeout(() => {
    addData(a.proj_sub_id, b, a.proj_instance_id); 
}, 60000);

setTimeout(() => {  
    addData(a.proj_sub_id, b, a.proj_instance_id);
}, 6000);

【问题讨论】:

  • 请提供更多详细信息,说明您所说的“有时效果很好,有时效果不佳”。它不运行吗?它运行得晚/早吗?
  • 到底是什么问题?请提供详细信息。
  • 有时函数 doSomething();按预期在 60 秒后执行。其他时候,它根本不执行。它从来没有过早或晚执行的情况。它要么有,要么没有,据我所知,每次运行它时所有因素都是相同的
  • 你怎么称呼它?在哪里?
  • 我尝试添加一些额外的细节,如果仍然没有意义,请告诉我。在这个问题上我的大脑有点颤抖。

标签: javascript node.js settimeout


【解决方案1】:

您可以尝试将函数直接传递给 setTimeout,并在函数 userComplete 中调用您的 addData 方法并尝试它是否有效。

setTimeout(userComplete,60000);

【讨论】:

    【解决方案2】:

    【讨论】:

    • setIntervalsetTimeout 是两个不同的东西,不要混淆。
    • 我知道他们是不同的,我推荐setInterval的原因是因为我相信这就是大卫想要做的。
    • 抱歉没有说清楚。但是,在这种情况下,我不相信我正在尝试 setInterval,因为我只希望它在稍后执行一次。我试图修改我的问题以使其更清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-28
    • 1970-01-01
    • 2017-10-29
    • 2021-07-20
    • 1970-01-01
    • 2015-09-06
    相关资源
    最近更新 更多