就在我以为我已经承诺想通了,我又难住了。我正在尝试使用递归函数来返回一个承诺。它看起来像在工作,但“那么”部分永远不会被击中。我试过使用$q.all
,但是这对我的Web API多次调用造成了问题。重写代码以使用递归看起来就像是答案,但我无法得到“然后”执行。我认为我必须错过简单的东西,但我似乎无法弄清楚什么。角那么对于承诺不会触发递归函数
这里是调用该函数:
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
,但是“那么”从未激发。
任何援助非常感谢!
你不会在条件的第一个分支中返回任何东西...惊讶你没有得到一个类型错误。 –
我会的。我返回该功能。 –
只有'返回'我看到在该分支*是在回调* –