Promise简单使用
1.Promise含义
Promise 是异步编程的一种解决方案,是一种链式的变成。
一段简单的使用
function helloPromise(ready) { return new Promise((resolve, reject)=>{ if(ready) { resolve('helloPromise'); } else{ reject('error'); } }); } helloPromise(true).then((message)=> { alert(message); }, (error)=> { alert(error); });
Promise的状态有三种
pending(进行中)
fulfilled(已成功)
rejected(已失败)
then和catch的用法
catch方法是.then(null, rejection)的别名,用于指定发生错误时的回调函数。使用catch写法比一般写法更加清晰。
function helloPromise(ready) { return new Promise((resolve, reject)=>{ if(ready) { resolve('helloPromise'); } else{ reject('error'); } }); } helloPromise(false).then((message)=> { alert(message); }).catch((error)=> { alert(error); });
Promise.all用于将多个Promise包装成一个新的Promise
Promise.all([p1, p2, p3]);
它们会按照包装的先后顺序依次执行
let p1=new Promise((resolve)=>{ setTimeout(()=>resolve('hello'),2000); }); let p2=new Promise((resolve)=>{ setTimeout(()=>resolve('promise',1000)); }); Promise.all([p1,p2]).then((message)=>{ console.log(message); });
Promise.race和Promise.all不同,只要其中有一项Promise执行完成就执行后续操作
let p1=new Promise((resolve)=>{ setTimeout(()=>resolve('hello'),2000); }); let p2=new Promise((resolve)=>{ setTimeout(()=>resolve('promise',1000)); }); Promise.race([p1,p2]).then((message)=>{ console.log(message); });
上面代码只返回promise