等待一个承诺?
等待一个承诺?
我有以下的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方法避免大量的样板式错误捕获代码...也许我做错了什么?