小编Ae *_*ung的帖子

为什么 Promise.all() 不能与异步函数一起使用?

我正在探索 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, …

javascript es6-promise

0
推荐指数
1
解决办法
210
查看次数

标签 统计

es6-promise ×1

javascript ×1