Promise定义
Promise是异步编程的一种解决方案,它有三种状态,分别是pending-进行中、resolved-已完成、rejected-已失败
当Promise的状态又pending转变为resolved或rejected时,会执行相应的方法,并且状态一旦改变,就无法再次改变状
bpm中使用方法:
![](https://img.haomeiwen.com/i12120061/3bc03b5a36f513a3.png)
注涉及AngularJS中异步操作与$q.defer():
var deferred = $q.defer();\\生成deferred异步对象
deferred.resolve(rtns);\\执行到这里时,改变deferred状态为执行成功,返回rtns为从后台取到的数据,可以继续执行then,done
deferred.reject(data);\\执行到这里时,改变deferred状态为执行失败,返回data为报错,可以继续执行fail
return deferred.promise;\\起到保护作用,不允许函数外部改变函数内的deferred状态
bpm中ajax中调用,obj.then(function1(){},function2(){}),(注:obj以封装阿加西请求的对象了,参数1,处理ajax请求成功的处理会返回 deferred.resolve(res)数据处理;失败则会执行 deferred.reject('请求超时');)
注:
Promise.prototype.then() VS Promise.prototype.catch()
1..then()方法使Promise原型链上的方法,它包含两个参数方法,分别是已成功resolved的回调和已失败rejected的回调
2..catch()的作用是捕获Promise的错误,与then()的rejected回调作用几乎一致。但是由于Promise的抛错具有冒泡性质,能够不断传递,这样就能够在下一个catch()中统一处理这些错误。同时catch()也能够捕获then()中抛出的错误,所以建议不要使用then()的rejected回调,而是统一使用catch()来处理错误
Promise.done() / Promise. finally()
3.Promise.done() 的用法类似 .then() ,可以提供resolved和rejected方法,也可以不提供任何参数,它的主要作用是在回调链的尾端捕捉前面没有被 .catch() 捕捉到的错误
4.Promise. finally() 接受一个方法作为参数,这个方法不管promise最终的状态是怎样,都一定会被执行
![](https://img.haomeiwen.com/i12120061/f01a4dd096f60d90.png)
网友评论