用来获取异步操作的结果。
异步操作的三种状态:pending
(进行中)、fulfill
(已成功)、rejected
(已失败)。
Promise状态的变化的两种状态:pending
--> fulfill
或者 pending
--> rejected
。这两种情况发生,状态即凝固,称为 resolved (已经定型)。
基本用法:
const promise = new Promise((resolve, reject) => {
// ... 异步操作代码
// 成功 res
// 失败信息 err
if(/* 操作成功*/){
resolve(res);
}else{
reject(err)
}
})
promise 实例生成之后,可以用 then 方法指定 resolved 的状态 或者 rejected 的状态的回调函数
promise.then(function(){
// success
},function(){
// error
})
1.一个简单的Promise对象的例子
function timeout(ms){
return new Promise((resolve, reject) => {
setTimeout( resolve, ms, 'done');
});
}
timeout(100).then((value) => {
console.log(value);
})
2.利用Promise.all合并多个异步请求
const p1 = new Promise((resolve, reject) => {
// ... 异步操作代码
resolve('a')
})
const p2 = new Promise((resolve, reject) => {
// ... 异步操作代码
resolve('b')
})
Promise.all([p1,p2]).then(result=>{
// result: ['a', 'b']
// 其它操作
})
网友评论