在解决任何子承诺之前,将解决组合承诺

时间:2015-05-13 03:33:56

标签: javascript angularjs angular-promise

我正在使用AngularJS及其$q

我写了一个服务如下:

Get.$inject = ['$q', '$http'];
function Get($q, $http) {
    return {
        get: function(url) {
            var deferred = $q.defer();

            $http.get(url + '?' + Math.random()).success(function(data) {
                alert('Got data: ' + JSON.stringify(data));
                deferred.resolve(data);
            });

            return deferred.promise;
        }
    }
}

并像

一样使用它
$q.all(Get.get('backend/index.php/poster/pull'), Get.get('data/poster_past.json')).then(
                function(NewAndOldPosters) {
                    alert("Old and New: " + JSON.stringify(NewAndOldPosters));
                }
    );

但在收到实际数据"Old and New: {"$$state":{"status":0}}"的提醒之前,我收到了"Got Data: ......"的提醒。如果$q.all无法正常工作,怎么会发生这种情况?

1 个答案:

答案 0 :(得分:2)

将你的承诺包裹在一个阵列中:

[Get.get('backend/index.php/poster/pull'),Get.get('data/poster_past.json')]