就在我以爲我已經承諾想通了,我又難住了。我正在嘗試使用遞歸函數來返回一個承諾。它看起來像在工作,但「那麼」部分永遠不會被擊中。我試過使用$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
,但是「那麼」從未激發。
任何援助非常感謝!
你不會在條件的第一個分支中返回任何東西...驚訝你沒有得到一個類型錯誤。 –
我會的。我返回該功能。 –
只有'返回'我看到在該分支*是在回調* –