new Promise 多层嵌套
时间: 2024-07-30 16:01:24 浏览: 33
在JavaScript中,`new Promise`通常用于处理异步操作。当你需要执行一系列依赖于前一个操作完成的任务,可能会有多个Promise的嵌套。例如,你可以想象一个顺序执行的步骤链:
```javascript
let promise1 = new Promise((resolve, reject) => {
// 异步操作1
setTimeout(() => {
resolve('Step 1 done');
}, 1000);
});
let promise2 = new Promise((resolve, reject) => {
// 等待promise1完成后再执行异步操作2
promise1.then(result => {
if (result === 'Step 1 done') {
resolve('Step 2 done');
} else {
reject('Previous step failed');
}
}).catch(reject);
});
let promise3 = new Promise((resolve, reject) => {
// 类似地,等待promise2完成
promise2.then(result => {
if (result === 'Step 2 done') {
resolve('Final result');
} else {
reject(result); // 如果前两个失败,则直接抛出错误
}
});
});
// 同时执行所有操作
Promise.all([promise1, promise2, promise3]).then(results => {
console.log(results); // ['Step 1 done', 'Step 2 done', 'Final result']
}).catch(error => {
console.error(error);
});
```
这里通过`then()`和`.catch()`方法处理每个Promise的结果,并将它们连接成一个嵌套链条。`Promise.all()`则可以同时等待所有嵌套的Promise全部解决。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)