等待一个承诺?

12 浏览
0 Comments

等待一个承诺?

我有以下的angularjs代码:

$scope.clients = commonFactory.getData(clientFactory.getClients());
if ($scope.clients.length > 0) {
    $scope.sampleForm.ClientId = $scope.clients[0].ClientId;
}

以及commonFactory中的getData函数:

factory.getData = function (method) {
    method.then(function (response) {
        return response.data;
    }, function (error) {
        $rootScope.alerts.push({ type: 'error', msg: error.data.ExceptionMessage });
    });
};

问题是当该行代码被执行时,$scope.clients.length是未定义的,原因是异步调用。

有没有办法在我知道$ scope.clients已被赋值之前不进行长度检查?我尝试过类似这样的方法:

$scope.clients = commonFactory.getData(clientFactory.getClients()).then(function () {
    if ($scope.clients.length > 0) {
        $scope.sampleForm.ClientId = $scope.clients[0].ClientId;
    }
});

试图链式调用我的then promises,但是不起作用...这里的目标是使getData方法避免大量的样板式错误捕获代码...也许我做错了什么?

0