promise是一种异步处理模式,因为无法确定异步何时调用回调函数,所以需要promise告知。
api.action('s101', query) //action方法会返回$q.defer().promise
.then(
function(data) {
//如果请求成功执行
var vdata = api.data_isok(data);
if(vdata) {
mjSession.save(vdata);
mjModalS.close();
} else {
alert(mjLang.T('5_85')+'!');
}
},
function() {
//如果请求失败执行
alert('error');
}
)
.finally(
//无论请求成功或者失败都要执行
function() {
$scope.deleteLoading = false;
});
)
Promise的基本用法
上面代码表示, $q.defer() 构建的 deffered 实例的几个方法的作用。
如果异步操作成功,则用resolve方法将Promise对象的状态变为“成功”(即从pending变为resolved);
如果异步操作失败,则用reject方法将状态变为“失败”(即从pending变为rejected)。
如果异步操作未完成,则用notify方法将状态变为unfulfilled状态,在resolve或reject之前可以被多次调用。
最后返回 deferred.promise ,我们就可以链式调用then方法。