javascript基础系列之Promise
Promise 对象用于表示一个异步操作的最终完成 (或失败)及其结果值
概念
promise只有三种状态(pending|fulfilled|rejected)
Promise构造函数
1 2 3 4 5 6 7 8 9
| const p1 = new Promise((resolve, reject)=> { setTimeout(() => { resolve("success") }, 2000); }); p1.then((res)=> { console.log(res); });
|
静态方法
Promise.all
1 2 3 4 5 6 7 8 9 10 11 12
| const p1 = Promise.resolve(1); const p2 = 2; const p3 = new Promise((resolve, reject)=> { setTimeout(function(val){ console.log(arguments); resolve("world") },1000, "hello"); }) Promise.all([p1, p2, p3]).then(values=> { console.log(values); });
|
Promise[allSettled|any|race]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
const p1 = new Promise((resolve, rejected)=> { setTimeout(() => { rejected("failed"); }, 2000); }); const p2 = new Promise((resolve, rejected)=> { setTimeout(() => { rejected(1); }, 1000); }); const p3 = new Promise((resolve, rejected)=> { setTimeout(() => { resolve(2); }, 3000); }); Promise.allSettled([p1, p2, p3]).then((res)=> { console.log(res); });
Promise.any([p1,p2,p3]).then(res=> { console.log(res); });
Promise.race([p1, p2, p3]).then((res)=>{ console.log(res); }).catch(err=> { console.log(err); });
|
Promise[rejected|resolve]
1 2 3 4 5 6 7 8 9 10
|
function rejected(result) { console.log("rejected__", result); } function resolved(result) { console.log("fulfilled__", result); } Promise.reject("fail").then(resolved, rejected); Promise.resolve("success").then(resolved, rejected);
|
实例方法
Promise.prototype[then|catch|finally]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
const p1 = new Promise((resolve, reject)=> { resolve("hello"); });
p1.then(res=> { console.log(res); throw "fail"; }).catch(err=> { console.log(err); return "world"; }).finally(()=> { console.log("promise finally"); });
|
参考文档
Promise