如何将值赋值给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。
发布于 2015-12-04 21:23:31
你不能这么做。
撇开returning from an asynchronous call…常见的问题不谈
你想在这里做一些相当严肃的时间旅行。
在X秒之后,您将启动一个异步函数。在那之后的某一时刻,你会从中得到一个价值。只有这样,你才会知道X应该是什么。
这是不可能的(因为一般因果关系的局限性,而不是具体的编程)。
可以做到的是:
当然,由于无法预测步骤2和步骤3之间的时间,所以步骤4中得到的值可能为负值(也就是说,在等待异步计算完成时,您希望运行函数的时间已经过去)。
https://stackoverflow.com/questions/34097551
复制相似问题