angular 异步处理模式promise---$q

来源:互联网 发布:成为淘宝客 编辑:程序博客网 时间:2024/05/01 04:38

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方法。


0 0