gpt4 book ai didi

javascript - 从 API 获取数据并在完成后继续

转载 作者:行者123 更新时间:2023-12-01 03:57:10 25 4
gpt4 key购买 nike

我在 Nodejs 中循环获取 api 请求时遇到问题。我想从多个端点获取数据,并在所有请求完成后继续。我尝试了类似的方法,但它运行异步并记录一个空数组。有什么提示可以确定所有请求何时准备就绪吗?

var api_endpoints = { "1": "url1", "2": "url2", "3": "url3" };

var allApiSources = [];
_.each(api_endpoints, function (val, key) {
request(val, function (error, response, body) {
if (!error && response.statusCode == 200) {
var data = JSON.parse(body);
_.each(data.url, function (val, key) {
allApiSources.push(value);
});
}
});
});
console.log(allApiSources); // []

谢谢!

最佳答案

使用promisesObject.values

一个假设... data.url 是一个对象,而不是数组

另一个假设是,在原始代码中 allApiSources.push(value); 应该是 allApiSources.push(val);

var api_endpoints = { "1": "url1", "2": "url2", "3": "url3" };

Promise.all(Object.values(api_endpoints).map(value => new Promise((resolve, reject) => {
request(value, function (error, response, body) {
if (!error && response.statusCode == 200) {
var data = JSON.parse(body);
// you can remove the Object.values call if data.url is an Array
return Object.values(data.url);
}
reject(error || response.statusCode);
});
})))
.then(results => [].concat(...results)) // flattens the array of arrays
.then(allApiSources => {
console.log(allApiSources);
});

关于javascript - 从 API 获取数据并在完成后继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42549957/

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