Ich muss mehrere Versuche auf die asynchrone Funktion getDBfileXHR
, aber ich weiß nicht, wie Sie damit umgehen. Ich bin wirklich neu zu verketten Versprechen so brauche ich Sie, geduldig zu sein;) Soll ich sie wie diese Kette:Wie eine asynchrone Funktion mehrere Male versuchen, mit Versprechen, .then(), .Catch()
return getDBfileXHR(dbUrl(), serverAttempts)
.then(function() { // success
console.log('-basic XHR request succeeded.');
return dbReadyDeferred.promise;
})
.catch(function(){
return getDBfileXHR(dbUrl(), serverAttempts)
.then(function(){
console.log('-basic XHR request succeeded after second attempt.');
return dbReadyDeferred.promise;
})
.catch(function() { // error
console.log("-basic XHR request failed, falling back to local DB file or localStorage DB...");
return fallbackToLocalDBfileOrLocalStorageDB();
});
})
oder so:
return getDBfileXHR(dbUrl(), serverAttempts)
.then(function() { // success
console.log('-basic XHR request succeeded.');
return dbReadyDeferred.promise;
})
.catch(function(){
if (typeof serverAttempts !== "undefined") serverAttempts++;
console.log('on passe dans le catch, serverAttempts = ', serverAttempts)
if (serverAttempts < 2) {
return getDBfileXHR(dbUrl(), serverAttempts)
.then(function() { // success
console.log('-basic XHR request succeeded.');
return dbReadyDeferred.promise;
})
.catch(function(){
console.log("-basic XHR request failed, falling back to local DB file or localStorage DB...");
return fallbackToLocalDBfileOrLocalStorageDB();
})
} else {
console.log("-basic XHR request failed, falling back to local DB file or localStorage DB...");
return fallbackToLocalDBfileOrLocalStorageDB();
}
})
Dieser zweite Code scheint zu funktionieren, aber Ich bin mir nicht sicher, ob es sich um Best Practices handelt.
Danke für Ihre Hilfe!
Mögliche Duplikat [Versprechen Retry Design Patterns] (http://stackoverflow.com/questions/38213668/promise (retry-design-patterns) –
Es ist nicht die gleiche Syntax in dieser Frage, ich weiß nicht, wie ich mich mit meinem Fall identifizieren soll. – Louis
benötigt "getDBfileXHR" ** wirklich das Argument serverAttempts, und ist es 0 oder 1? –