Promise的使用
Promise是ES6中新增的异步编程解决方案。它的作用是代替回调函数,用于处理异步操作的结果。
Promise的状态
Promise对象存在三种状态:
- pending: 初始状态,既不是成功也不是失败状态。
- fulfilled: 意味着操作成功完成。
- rejected: 意味着操作失败。 Promise对象的状态只能从pending变为fulfilled或者从pending变为rejected,并且状态一旦改变就不会再变。
Promise的基本用法
使用Promise构造函数来创建一个Promise对象:
const promise = new Promise(function(resolve, reject) {
// ...做一些异步操作
if(/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
Promise构造函数接收一个函数参数,该函数有resolve和reject两个参数:
- resolve:将Promise状态置为fulfilled
- reject:将Promise状态置为rejected 然后可以使用then方法指定resolved状态和rejected状态的回调函数:
promise.then(function(value) {
// fulfilled
}, function(error) {
// rejected
});
Promise示例
const promise = new Promise(function (resolve, reject) {
setTimeout(()=>{
let num = Math.random();
if(num < 0.5){
resolve("操作成功!num=" + num);
} else {
reject("操作失败!num=" + num);
}
},300);
});
promise.then(function (msg) {
console.log(msg);
}).catch(function (msg) {
console.log(msg);
});
上面代码使用Promise封装了一个请求,请求成功时调用resolve,请求失败时调用reject。 然后使用then方法分别指定resolved和rejected状态的回调函数,从而能够按照Promise的机制进行异步处理。这是一个Promise基础用法的简单示例。