【发布时间】:2012-08-14 09:05:30
【问题描述】:
我 100% 肯定肯定有一些简单的答案,但今天我在谷歌上搜索很烂。代码中的问题。
async.waterfall([
function(callback){
callback(null, 'some value..');
}
],
function (err, result) {
// how do I get result outside of this block?
}
);
如果我在这个块之外设置一个变量并尝试将“结果”分配给它,由于 JavaScript 作用域的性质,它不会脱离该块..
谢谢!
【问题讨论】:
-
您能澄清一下“分配”给
result的原因吗?我假设您的意思是async.waterfall内的东西,是吗? -
我怀疑您是在
waterfall调用之后尝试访问该变量,这意味着问题恰恰在于异步概念。您能否详细说明您在哪里访问外部变量? -
result = 'some value..' 在这种情况下。它通过回调分配。我想做的是:在 async.waterfall 之前设置一些数据,在瀑布内部执行一系列操作(所有外部变量都可以在内部访问),以某种方式进一步传递结果,但我不确定如何。理想情况下,我想设置一个对象,在瀑布内使用该对象,同时不断更新其属性,并在我们离开瀑布时保留更改。接受的解决方法...
-
我认为我们需要更多的代码......你在这里使用特定的 npm 包吗?
-
一旦你输入了异步代码,你就必须呆在那里——除了从瀑布的回调中调用其他函数之外,没有“离开瀑布”的概念。但是,您可以在输入异步代码之前对创建的对象进行修改,但是您仍然必须确保在瀑布完成后通过使用代码或从回调中调用函数来访问它(除非正在修改的对象被视为全局对象)。
标签: javascript node.js closures