У меня проблема с прикованными обещаниями по рекурсивной функции. Моя рекурсивная функция похожа на ответ, найденный здесь на Stack Overflow по аналогичной проблеме. Проблема заключается в том, что вызов функции обещания является угловым. Для каждого. Первый возвращает отлично, однако, когда второй запускается, «тогда» попадает, но ответ по-прежнему удерживает значение для предыдущего обещания, поэтому я получаю одни и те же данные дважды. К тому времени, когда второе обещание будет разрешено, слишком поздно, и страница уже отображена с дублирующейся информацией.AngularJs Promise «Then» Пожары перед обещанием разрешены
Вот мое обещание функции:
angular.forEach(question, function(value,key){
var returnString = value.myString
var promise = getClusterLink(linkcodes, returnString)
promise.then(function (response) {
value.myString = response;
linkcount = 0;
})
})
Моя рекурсивная функция:
var thisdeferred = $q.defer();
function getClusterLink(linkcodes, returnString) {
contractorService.gethyperlink(linkcodes[linkcount])
.success(function (data) {
var vchUrl = data[0].vchUrl;
var yCode = "|Y" + linkcodes[linkcount] + "~";
returnString = returnString.replaceAll(yCode, vchUrl);
linkcount++;
if (linkcount < linkcodes.length) {
return getClusterLink(linkcodes, returnString);
}
else {
thisdeferred.resolve(returnString);
}
})
return thisdeferred.promise;
};
Я попытался положить тайм-аут на deferred.resolve, но я все еще получаю такое же дублирование он просто занимает больше времени. Любая помощь очень ценится!
Вы забыли ',' после 'вар обещание = getClusterLink (linkcodes, returnString)' – Weedoze
Да, я думал, что в первый тоже, но добавление точки с запятой не имело никакого значения. –