$q.all 处出错

Error at $q.all

我在 AngularJS 中编写了以下代码来执行多重承诺:

控制器

    var promisesSetUp = {
        setUp: getSetup(),
        brands: getBrands()
    }

   var getSetup = function () {
        var defered = $q.defer();
        var promise = defered.promise;
        $http({
            method: 'GET',
            url: _config.WsUrl + 'api/SalesSetup'
        }).then(function successCallback(response) {
            defered.resolve(response);
        }, function errorCallback(response) {
            defered.reject(response);
        });
        return promise;
    };

    var getBrands = function () {
        var defered = $q.defer();
        var promise = defered.promise;
        $http({
            method: 'GET',
            url: _config.WsUrl + 'api/GetBrandsList'
        }).then(function successCallback(response) {
            defered.resolve(response.data);
        }, function errorCallback(response) {
            defered.reject(response);
        });
        return promise;
    };


    $q.all(
       promisesSetUp
    ).then(function (data) {
        console.log(data);
    }, function (error) {
       console.error(data)
    });

当我执行这段代码时,我只有函数 getSetUp 的响应。控制台输出显示:

响应

Object: { brands: undefined, setUp: data}

谁能解释一下为什么我只得到第一个函数的响应?

谢谢

getSetup() 中,您将使用 defered.resolve(response); 解决承诺,而在 getBrands() 中,您将使用 defered.resolve(response.data);

品牌响应似乎是一个对象,但没有字段数据。检查该字段是否确实存在于网络面板的响应正文中。

您可能打算单独解决 response

另外 - 如果您根本不修改响应,您可以简化您的方法:

var getBrands = function () {
    return $http({
        method: 'GET',
        url: _config.WsUrl + 'api/GetBrandsList'
    });
};