gpt4 book ai didi

javascript - 使用 async.waterfall

转载 作者:行者123 更新时间:2023-11-30 05:38:00 25 4
gpt4 key购买 nike

我正在使用 node.js 和异步包。

这是我的代码:

async.waterfall(
[
function(callback) {
var data = getSomeData();
callback(null, data);
},
function(data, callback) {
someFunctionThatNeedsData(data);
callback(null, 'done');
}
],
function(err, result) {
}
);

getSomeData 有一个异步 HTTP 请求,它从网络服务中获取一些数据。我想等到收到响应,然后返回该数据并将其传递给 someFunctionThatNeedsData

我期望的是 getSomeData(包括其中的回调)必须在继续调用 someFunctionThatNeedsData 之前完成。

问题是,尽管在这里使用了 waterfall 函数,但 data 在到达 someFunctionThatNeedsData 时仍未定义。

此外,从 console.log 我可以看到 getSomeData 的结尾在 getSomeData 内部的回调甚至开始之前就已到达。

我是不是错误地使用了 waterfall,或者它只是不是这里的正确工具?如果只是不对,我可以用什么来达到预期的效果?

或者我是否必须放弃深度嵌套的回调(在未来的工作中,我会这样做)并且必须通过将内联代码提取到命名函数中来缓解它?

最佳答案

getSomeData() has an asynchronous http request that grabs some data from a web service.

这就是问题所在。执行流程已经继续到回调并执行它。这就是异步函数的工作原理!

您必须将回调传递给 getSomeData,它会在 HTTP 请求完成后调用它。所以是的:您可能需要嵌套回调。

关于javascript - 使用 async.waterfall,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22418790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com