JavaScript promise 详情
时间: 2023-10-14 15:24:22 浏览: 97
JavaScript with Promises
5星 · 资源好评率100%
JavaScript Promise是一种异步编程的解决方案,它可以避免回调地狱(callback hell),使异步代码更加容易理解和维护。
Promise有三种状态:pending(等待中)、fulfilled(已成功)和rejected(已失败)。当一个Promise被创建时,它处于pending状态,可以通过调用resolve函数将其状态改为fulfilled,或者通过调用reject函数将其状态改为rejected。Promise的状态一旦改变,就不会再改变。
Promise可以链式调用,即在一个Promise的then方法中返回一个新的Promise。这样就可以实现多个异步操作的顺序执行,而不需要嵌套回调函数。
Promise还可以通过catch方法捕获错误,而不需要使用try-catch语句。
基本用法:
```javascript
const promise = new Promise((resolve, reject) => {
// 异步操作
if (/* 异步操作成功 */) {
resolve(result);
} else {
reject(error);
}
});
promise.then(result => {
// 成功处理
}).catch(error => {
// 错误处理
});
```
Promise.all方法可以将多个Promise实例包装成一个新的Promise实例,等所有的Promise实例都成功时,新的Promise实例才算成功,返回值是一个数组,包含每个Promise实例的返回值。
Promise.race方法也是将多个Promise实例包装成一个新的Promise实例,只要有一个Promise实例成功或失败,新的Promise实例就算成功或失败,返回值是第一个成功或失败的Promise实例的返回值。
```javascript
Promise.all([p1, p2, p3]).then(values => {
// values是一个数组,包含p1、p2、p3的返回值
}).catch(error => {
// 任一Promise实例失败,就会走到这里
});
Promise.race([p1, p2, p3]).then(value => {
// 第一个Promise实例成功或失败,就会走到这里
}).catch(error => {
// 第一个Promise实例失败,就会走到这里
});
```
阅读全文