我在递归函数中遇到链接承诺问题。我的递归函数与Stack Overflow上的类似问题的答案类似。问题是对promise函数的调用是angular.forEach。第一个返回完美,但是当第二个运行时,“then”会被击中,但响应仍然保留前一个promise的值,所以我得到相同的数据两次。到第二个承诺解决的时候,已经太晚了,并且页面已经呈现了重复信息。AngularJs承诺“然后”在承诺解决之前触发
这里是我的诺言功能:
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但我仍然得到它只是需要更长的时间相同的重复。任何援助非常感谢!
你忘了','后'VAR承诺= getClusterLink(linkcodes,returnString)' – Weedoze
是啊,我认为首先得,但添加分号并没有什么区别。 –