我有一个包含 4 个请求对象的数组,我想在这些对象上使用 Fetch API 并取回 promise 。然后我想解决这些 promise 中的每一个并取回值(value)。
以下是我构建请求对象的方式。
let requestsArray = urlArray.map((url) => {
let request = new Request(url, {
headers: new Headers({
'Content-Type': 'text/json'
}),
method: 'GET'
});
return request;
});
下面是我尝试使用 Promise.all()
Promise.all(requestsArray.map((request) => {
return fetch(request).then((response) => {
return response.json();
}).then((data) => {
return data;
});
})).then((values) => {
console.log(values);
});
最后一个 console.log(values)
不会向控制台打印任何内容。我使用 Promise.all()
错了吗?
我知道第一个请求通过了,当我单独运行每个请求时,它工作正常。唯一的问题是当我尝试同时运行它们时。
最佳答案
我看不出有任何问题,对我来说它返回得很好:https://jsfiddle.net/np5bx03j/
但是,这是使用 jsfiddles /echo/json URL 而非您的原始 URL 进行的测试。因此,我假设您的情况发生了一些错误。
我建议添加一个 catch
来记录错误:
Promise.all(requestsArray.map((request) => {
return fetch(request).then((response) => {
return response.json();
}).then((data) => {
return data;
});
})).then((values) => {
console.log('values', values);
}).catch(console.error.bind(console));
编辑:为了完整起见:根据 API ( MDN ) 或其他任何内容,我看不到任何问题。
关于javascript - 使用 Promise.all 解决获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45389677/