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

A combined promise is resolved before any sub-promise is resolved

我正在使用 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));
                }
    );

但在收到实际数据 "Got Data: ......" 的警报之前,我收到了 "Old and New: {"$$state":{"status":0}}" 的警报。为什么 $q.all 没有按预期工作?

将您的承诺包装在一个数组中:

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