gpt4 book ai didi

javascript - 带有请求 json 的多个获取请求无法在 Node js 中使用异步正确执行

转载 作者:搜寻专家 更新时间:2023-11-01 00:30:06 25 4
gpt4 key购买 nike

我的要求是我需要从多个 REST 资源加载 JSON 数据。为此,我需要发出多个获取请求。当所有请求都完成后,我需要执行一些功能。

下面是我的代码:

var asyncTasks = [];
//These URLs are dynamic and can increase or decrease
var urls = ["resource1", "resource2", "resource3"];
var client = request.createClient("domainurl");

urls.forEach(function (item) {
asyncTasks.push(function () {
client.get(item, function (err, res, body) {
dataLoaded(err, res, body)
});
});
});

async.parallel(asyncTasks, function () {
// All tasks are done now
allDataLoaded();
});

function dataLoaded(err, res, body) {
console.log('Data Loaded');
};

function allDataLoaded() {
console.log("All data loaded");
}

我面临的问题是 allDataLoaded 函数没有被调用,尽管 dataLoaded 函数被正确调用。

我为此使用了 request-json 和 async npm 包。感谢您抽出时间,如果需要任何其他信息,请告诉我。

最佳答案

async.parallel 将回调传递给您需要调用的每个任务,否则它无法知道您的任务何时完成。使用

var asyncTasks = urls.map(function (item) {
return function (cb) {
// ^^
client.get(item, function (err, res, body) {
dataLoaded(err, res, body)
cb(err);
// ^^^^^^^
});
};
});

然后 async.parallel(asyncTasks, allDataLoaded) 将起作用。

关于javascript - 带有请求 json 的多个获取请求无法在 Node js 中使用异步正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39532778/

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