从async.waterfall分配全局变量

时间:2015-12-04 21:13:53

标签: javascript asynchronous global-variables

如何为async.waterfall内的setTimeout的全局变量赋值?

以下是我的代码的一部分:

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

1 个答案:

答案 0 :(得分:0)

你不能。

暂不考虑returning from an asynchronous call ...

的常见问题

你正试图在这里做一些非常认真的时间旅行。

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

这是不可能的(由于一般的因果关系的限制,而不是具体的编程)。

可能会:

  1. 存储当前时间
  2. 启动异步功能
  3. 当您从该功能获得结果时,使用它来确定间隔
  4. 减去"现在"之间的差异以及来自间隔的存储时间
  5. 使用该计算时间设置其他的超时时间
  6. 当然,由于您无法预测步骤2和步骤3之间的时间,因此您在步骤4中获得的值可能是负数(即您希望运行该功能的时间将是等待异步计算完成时已经过去了。