Ich möchte den Wert eines zweiten Versprechens zurückgeben, wenn der erste (Wert im Cache) fehlschlägt.Versprechen, das zweites Versprechensergebnis zurückgibt, wenn es zuerst fehlschlägt
Ich habe den folgenden Code, aber die Auflösung ist nicht definiert.
exports.getConfig = function (a, r) {
return new Promise(resolve, reject) {
getConfigFromCache(a, r)
.catch(function(e){
getRouteConfigFromWeb(a, r)
}).then(function(result) {
//return value of the promise that was called
resolve(result)
})
}
};
wird angenommen, dass beide getConfigFromCache und getRouteConfigFromWeb Rückkehr richtig verspricht.
Gibt es einen Weg, dies zu erreichen, oder denke ich falsch darüber nach? direkt
exports.getConfig = function (a, r) {
var cache = getConfigFromCache(a, r);
return cache.catch(function(e) {
return getRouteConfigFromWeb(a, r); // NB: return *essential*
});
}
Wenn der getConfigFromCache()
Aufruf erfolgreich ist, ist die resultierende gelöst Versprechen sollte überspringen durch die .catch
und erhalten zurückgegeben:
Sie ... nie genannt Auflösung oder ablehnen .. –
danke für das zeigen, dass. Ich habe immer noch das gleiche Problem beim Aufruf von resolve (result) –
versuchen, Caching 'resolve'. 'var _resolve = resolve;' oder etwas Ähnliches, bevor Sie 'getConfig' eingeben – Ryan