Как раз тогда, когда я думал, что у меня есть обещания, я понял, что снова в тупике. Я пытаюсь использовать рекурсивную функцию для возврата обещания. Похоже, что он работает, но «затем» часть никогда не попадает. Я пытался использовать $q.all
, но это вызывает у меня проблему с несколькими вызовами моего веб-API. Перезапись кода для использования рекурсии казалась ответом, но я не могу заставить «then» выполнить. Я полагаю, что мне нужно пропустить что-то простое, но я не могу понять, что именно.Угловая Тогда не срабатывает для Promise по рекурсивной функции
Вот вызов функции:
getClusterLink(linkcodes, returnString)
.then(function() {
value.vchTextBeforeQuestionCluster = $scope.returnString;
})
Вот рекурсивная функция:
function getClusterLink(linkcodes, returnString) {
var deferred = $q.defer();
$scope.returnString = returnString;
if (linkcount < linkcodes.length) {
contractorService.gethyperlink(linkcodes[linkcount])
.success(function (data) {
var vchUrl = data[0].vchUrl;
var end = vchUrl.length;
var docID = vchUrl.substring(vchUrl.indexOf("=") + 1, end);
var vchLinkName = data[0].vchLinkName;
var yay = '<a href="" ng-click="getDocumentByID(' + docID + ')">' + vchLinkName + '</a>';
var yCode = "|Y" + linkcodes[linkcount] + "~";
$scope.returnString = $scope.returnString.replaceAll(yCode, yay);
linkcount++;
return getClusterLink(linkcodes, $scope.returnString);
})
}
else {
deferred.resolve();
return deferred.promise;
}
};
Сама функция работает правильно. Он попадает в resolve
и return deferred.promise
, но «тогда» никогда не срабатывает.
Любая помощь очень ценится!
Вы ничего не возвращаете в первой ветви условного ... удивляетесь, что вы не получаете ошибку типа. –
я. Я возвращаю функцию. –
Только «возврат» я вижу в этой ветке * внутри обратного вызова * –