如何为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
。
答案 0 :(得分:0)
你不能。
暂不考虑returning from an asynchronous call ...
的常见问题你正试图在这里做一些非常认真的时间旅行。
X秒后,您将启动异步功能。在那之后的某个时刻,你将获得一个价值。只有这样你才知道X应该是什么。
这是不可能的(由于一般的因果关系的限制,而不是具体的编程)。
可能会:
当然,由于您无法预测步骤2和步骤3之间的时间,因此您在步骤4中获得的值可能是负数(即您希望运行该功能的时间将是等待异步计算完成时已经过去了。