我正在探索 Promise.all() 的使用,但我不知道为什么它没有给我预期的结果。我尝试一步一步地说明它。
让我们看一下我的代码:
var p2 = 1337;
var p3 = new Promise((resolve, reject) => {
setTimeout(resolve, 2000, 'foo');
});
var apiCall = async () =>{
// to simulate a api call that will response after 5 sec
setTimeout(() => {return 1000}, 5000);
}
Promise.all([p2,p3,apiCall()]).then(values => {
console.log(values); // [3, 1337, undefine], but I expect [3, 1337, 1000]
});
apiCall().then((response)=>{console.log(response)})
Run Code Online (Sandbox Code Playgroud)
据我了解,async 函数会立即返回一个 Promise,这就是 Promise.all 会等待的。
所以我期望,
.then(values => {
console.log(values); // [3, 1337, undefined]
});
Run Code Online (Sandbox Code Playgroud)
5秒后才会执行。
但 2 秒后的输出已经如下所示,而不是 [3, …