promise 跟回调函数相比,可让咱们更方便地定义
异步返回后的操做。
基本用法:javascript
//指定函数名 a、b let p = new Promise(function(a, b){ //指定promise何时改变状态,以及改变时传递的数据 setTimeout(()=>a('I am resolve message'), 1000)//1 setTimeout(()=>b('I am reject message'), 3000);//2 }); //指定改变时的回调函数,来处理数据 p.then(msg=>console.log(msg), msg=>console.log(msg))
咱们不用操心改变状态这个过程的实现,而只须要指定函数名a
、b
——它们的函数体由浏览器定义,功能分别是将promise
的状态变成“成功”和“失败”。java
当promise
状态改变时,浏览器就会调用回调函数。promise
注意 promise
的状态只能从“未完成”变成“成功”或“失败”,而不能从“成功”变成“失败”,因此上面代码中,当1生效后,2就不会生效了。另外传递的数据能够是任何类型,甚至能够是promise
类型来实现链式调用。浏览器
理解了基本的流程,其余的API应该也很容易了。异步