gpt4 book ai didi

javascript - 在循环内等待 API 的结果

转载 作者:行者123 更新时间:2023-12-01 00:54:09 26 4
gpt4 key购买 nike

我是 Node 新手,我试图理解 Promise,但它有点复杂。我尝试多次调用 API,然后返回结果。但我的路线首先发送响应。

我只想在完成循环后返回响应

data = {}
req.body.words.forEach(function (word) {

newsapi.v2.everything({
q: word,
domains: req.body.domains.join(', '),
sort_by: 'relevancy'
})
.then(response => {

data[word]=response;
})
});

return res.json(data);

它返回一个空数组。

最佳答案

您的循环是同步的,它正在启动异步调用,但从不等待它们。您可以使用 Promise.all 并行获取所有结果。或者可以以并行或串行方式使用async-await

data = {}
const promises = [];
req.body.words.forEach(function (word) {

const promise = newsapi.v2.everything({
q: word,
domains: req.body.domains.join(', '),
sort_by: 'relevancy'
})
.then(response => {

data[word] = response;
})
promises.push(promise);
});

Promise.all(promises)
.then(()=>{
res.send(data);
})

我已经针对完全相同的问题发表了一篇中等帖子:https://medium.com/trappedpanda/loops-asynchronous-functions-and-returning-collective-results-in-node-js-b7566285fb74

关于javascript - 在循环内等待 API 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56731073/

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