$q和promise

来源:互联网 发布:小满软件 垃圾 编辑:程序博客网 时间:2024/06/07 07:22

var deferred = $q.defer();\\生成deferred异步对象

deferred.resolve(rtns);\\执行到这里时,改变deferred状态为执行成功,返回rtns为从后台取到的数据,可以继续执行then,done

deferred.reject(data);\\执行到这里时,改变deferred状态为执行失败,返回data为报错,可以继续执行fail

return deferred.promise;\\起到保护作用,不允许函数外部改变函数内的deferred状态




多个异步请求写法:

var app = angular.module('app',[]);
app.controller('promiseControl',function($scope,$q,$http) {
    function getJson(url){
        var deferred = $q.defer();
        $http.get(url)
            .success(function(d){
                d = parseInt(d);
                console.log(d);
                deferred.resolve(d);
            });
        return deferred.promise;
    }

    getJson('json1.txt').then(function(){
        return getJson('json2.txt');
    }).then(function(){
        return getJson('json1.txt');
    }).then(function(){
        return getJson('json2.txt');
    }).then(function(d){
        console.log('end');
    });
});

使用then方法按序进行

原创粉丝点击