[英]Calling a closure inside a promise callback
我正在為Web應用程序實現隊列系統,以便將失敗的HTTP請求本地存儲以在以后重新執行。
我已經閱讀了Mozilla關於循環閉包的文檔,然后創建了內部閉包。
如果使用ids [1,2,3]
運行此命令,則輸出為:
makeRequestRecovery 1
makeRequestRecovery 2
makeRequestRecovery 3
failure
recover id 1
failure
recover id 1
failure
recover id 1
碼:
var recoverRequest = function(entry) {
console.log('recover id', entry.data.id);
$scope.storage.entries.push(entry);
};
var makeRequestRecovery = function(entry) {
console.log('makeRequestRecovery', entry.data.id);
return function() {
recoverRequest(entry);
}
};
$scope.syncEntries = function() {
var initialLength = $scope.storage.entries.length;
var requestCount = 0;
while ($scope.storage.entries.length > 0) {
var entry = $scope.storage.entries.pop(0);
var recover = makeRequestRecovery(entry);
// restangular stuff...
// restangular HTTP REMOVE
entry.remove().then(function(data) {
console.log('success!', data);
}, function(data) {
console.log('failure', data);
recover();
});
requestCount++;
if (requestCount > 2 * initialLength) {
// too many requests failed
break;
}
}
}
我應該進行哪些更改,以便用正確的值執行recover()
?
我實際上沒有正確使用閉包。 recover
需要作為回調傳遞:
entry.remove().then(function(data) {
console.log('success!', data);
}, recover);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.