У меня есть следующий код: angularjsОжидание обещания?
$scope.clients = commonFactory.getData(clientFactory.getClients());
if ($scope.clients.length > 0) {
$scope.sampleForm.ClientId = $scope.clients[0].ClientId;
}
и функция GetData в commonFactory:
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
обещания, но не кости ... цель здесь не иметь метод GetData, чтобы избежать кучу шаблонного кода для ловли ошибок .. Возможно, я собираюсь сделать это неправильно?
Я обновил свой ответ с помощью живой демоверсии. Дайте знать, если у вас появятся вопросы. – m59
@ m59 вопрос ниже :) – Nicros