再帰関数の連鎖約束に問題があります。私の再帰関数は、同様の問題のStack Overflowの答えに似ています。問題はpromise関数の呼び出しがangular.forEachであることです。最初のものは完全に返されますが、2番目のものが実行されると "then"がヒットしますが、応答は以前の約束の値を保持しているので、同じデータを2回戻しています。 2番目の約束が解決されるまでには、それは遅すぎ、ページは既に重複した情報でレンダリングされています。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にタイムアウトを入れてみましたが、私はまだそれだけで時間がかかり、同じ重複を取得
は、ここに私の約束関数です。どんな支援も大歓迎です!
それを変更する必要がありますが、 '忘れてしまった;' 'VARの約束= getClusterLink(linkcodes、ReturnStringに)の後に' – Weedoze
ええ、私は、あまりにもその時最初に考えましたセミコロンを追加しても違いはありませんでした。 –