首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从async.waterfall分配全局变量

从async.waterfall分配全局变量
EN

Stack Overflow用户
提问于 2015-12-04 21:13:53
回答 1查看 554关注 0票数 0

如何将值赋值给async.waterfall中的全局变量,该变量位于setTimeout中?

下面是我代码的一部分:

代码语言:javascript
复制
var theVar = null;

setTimeout(function () {
 async.waterfall([
      function (next) {
        var thedata = 1;
        next(null,thedata);
      },
      function (thedata,next) {
        if (thedata === 1) {
            theVar = 2;
        }
        theVar = 3;
        next();
 ], function (err, result) {

 });
}, theVar * 1000); //theVar is timeout here.

因此,基本上,我希望在async.waterfall中设置全局变量。然后,该变量theVar将是setTimeout中的超时。现在,theVar总是null

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-04 21:23:31

你不能这么做。

撇开returning from an asynchronous call…常见的问题不谈

你想在这里做一些相当严肃的时间旅行。

在X秒之后,您将启动一个异步函数。在那之后的某一时刻,你会从中得到一个价值。只有这样,你才会知道X应该是什么。

这是不可能的(因为一般因果关系的局限性,而不是具体的编程)。

可以做到的是:

  1. 存储当前时间
  2. 启动异步函数
  3. 当从这个函数得到结果时,使用它来确定一个间隔。
  4. 从间隔中减去"now“与存储时间之间的差额。
  5. 将超时设置为使用计算时间执行其他操作。

当然,由于无法预测步骤2和步骤3之间的时间,所以步骤4中得到的值可能为负值(也就是说,在等待异步计算完成时,您希望运行函数的时间已经过去)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34097551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档