Promise有四种状态:
1.pending(进行中):初始状态,表示异步操作尚未完成。当创建一个Promise对象时,它的初始状态就是pending。
2.fulfilled(已成功):表示异步操作已成功完成,并返回了一个结果值。一旦Promise的状态转为fulfilled,就会调用onFulfilled回调函数。
3.rejected(已失败):表示异步操作执行过程中出现了错误或失败。一旦Promise的状态转为rejected,就会调用onRejected回调函数。
4.settled(已结束):表示Promise已经被resloved(fulfilled或rejected)。在settled状态下,Promise的状态已经确定,不会再发生变化。
Promise的状态转换是单向的,一旦状态确定后就不可以再改变。一开始是pending,然后可以转变为fulfilled或rejected,一旦转变为其中一种状态,就会保持在那个状态,无法再次改变。
// 创建⼀个 Promise 对象
var promise = new Promise(function(resolve, reject) {// 异步操作setTimeout(function() {var randomNum = Math.random();if (randomNum > 0.5) {resolve('Operation succeeded');} else {reject('Operation failed');}}, 1000);
});
// 使⽤ Promise 对象
promise.then(function(result) {console.log('Success:', result);}).catch(function(error) {console.log('Error:', error);}).finally(function() {console.log('Promise settled');});
上⾯的示例中,创建了⼀个 Promise 对象,并在内部定义了⼀个异步操作。根据异步操 作的结果,调⽤了 resolve 或 reject ⽅法来改变 Promise 的状态。
然后使⽤ then ⽅法注册了成功时的回调函数,使⽤ catch ⽅法捕获了错误。最后,使⽤ finally ⽅法来注册⼀个在 Promise完成后必定会执⾏的回调函数。
这样,我们就可以通过对 Promise 的状态进⾏判断和处理,来执⾏相应的操作。