ran*_*101 2 javascript promise
我有一个包含 4 个请求对象的数组,我想在这些对象上使用 Fetch API 并取回承诺。然后我想解决这些承诺中的每一个并取回价值。
这是我构建请求对象的方式。
let requestsArray = urlArray.map((url) => {
let request = new Request(url, {
headers: new Headers({
'Content-Type': 'text/json'
}),
method: 'GET'
});
return request;
});
Run Code Online (Sandbox Code Playgroud)
这是我尝试使用的方式 Promise.all()
Promise.all(requestsArray.map((request) => {
return fetch(request).then((response) => {
return response.json();
}).then((data) => {
return data;
});
})).then((values) => {
console.log(values);
});
Run Code Online (Sandbox Code Playgroud)
最后一个console.log(values)不会向控制台打印任何内容。我用Promise.all()错了吗?
我知道第一个请求通过了,当我单独运行每个请求时,它工作正常。唯一的问题是当我尝试同时运行它们时。
我看不出任何问题,对我来说它返回得很好:https :
//jsfiddle.net/np5bx03j/ 但是,这是一个使用 jsfiddles /echo/json 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));
Run Code Online (Sandbox Code Playgroud)
编辑:只是为了完整起见:根据 API ( MDN ) 或其他任何内容,我都看不到任何问题。