web前端技术博客
您当前的位置:web前端 > ES6

ES6 Promise的使用

作者:只会切图的前端 发布时间:2021-01-18 18:06:35 浏览量:10

Promise构造函数是同步执行的,.then中的函数是异步执行的。
Promise有三种状态,pending、fulfilled、rejected,状态一旦改变不能再变

注意:构造函数中的resolve或reject只有在第一次执行时有效,多次调用没有任何作用

let pro=new Promise((resolve,reject)=>{
   resolve("ok");
   reject("error");
   resolve("ok2")
})

promise在每次调用.then 或.catch时都会返回一个新的promise,实现链式调用。
构造函数只执行一次,一旦内部状态改变有了一个值,则后续每次调用then或catch则直接拿到该值。

注意:在then或者catch中返回一个error对象并不会抛出错误,所以不会再后续的catch中捕获
Promise.resolve().then(()=>{
     return new Error("error")
}).then((res)=>{
     console.log("then:"+res);//输出 then:Error: error
}).catch(err=>{
  console.log("catch:"+err);
})

需要改为 return Promise.reject(new Error("error")) 或者 throw new Error("error");
return new Error("error") 等价于 return Promise.resolve(new Error("error")); 

.then 或.catch返回的值不能时promise本身,否则造成死循环。
.then 或.catch的参数期望是函数,否则会发生值穿透。



 

发表评论
验证码:
联系我
粤ICP备17092958号