如果构建了一个promises数组然后传递给Promise.all
,那么执行会立即开始执行,还是仅在调用Promise.all
时执行?
示例代码:
let promises: Promise<string> [] = [this.methodCall(), this.methodCall(), this.methodCall()];
Promise.all(promises).then(values => {
...
}).catch(error => {
...
});
此外,这个代码示例是否会引起所有拒绝?
答案 0 :(得分:2)
创建Promise
时,它立即开始工作。查看日志。承诺身体功能起作用,然后在5秒后启动Promise.all
。
const pr = new Promise((resolve, reject) => {
console.log('Started !!!');
resolve();
});
console.log('Before setTimeout');
setTimeout( () => {
Promise.all([pr]).then(result => console.log('Resolved !!!'));
}, 5000)
console.log('After setTimeout');
使用参数resolve和reject传递的函数。该 执行函数由Promise立即执行 实现,传递解析和拒绝功能(执行者是 在Promise构造函数之前调用甚至返回创建的 对象)。