Ich arbeite mit einer API, die es mir ermöglicht, Daten mit einer lokalen DB zu synchronisieren. Es gibt eine syncReady-API, die ich rekursiv aufruft, bis der Synchronisierungsstapel bereit ist, mit dem Senden von Daten zu beginnen. Die Rekursion funktioniert ordnungsgemäß und der Callback wird aufgerufen, aber die Resolve-Funktion löst die Antwort niemals auf.Node.JS rekursives Versprechen löst nicht
const request = require('request-promise');
const config = require('../Configs/config.json');
function Sync(){}
Sync.prototype.syncReady = function (token, batchID) {
return new Promise((res, rej) => {
config.headers.Get.authorization = `bearer ${token}`;
config.properties.SyncPrep.id = batchID;
request({url: config.url.SyncReady, method: config.Method.Get, headers: config.headers.Get, qs: config.properties.SyncPrep})
.then((response) => {
console.log(`The Response: ${response}`);
res(response);
}, (error) => {
console.log(error.statusCode);
if(error.statusCode === 497){
this.syncReady(token, batchID);
} else rej(error);
}
);
});
};
Ich erhalte die angemeldet 497 und die „Die Antwort: {“ pagesTotal „; 0}“ Antwort, aber die res (Antwort) nie die Antwort unten in der Kette sendet. Ich habe eine console.log-Nachricht entlang der gesamten Kette hinzugefügt und keine der .then-Funktionen, die die Kette herunterfeuert, werden ausgelöst.
Ich hoffe ich habe das gut genug erklärt :-). Irgendwelche Ideen, warum das Versprechen sich nicht löst?
Danke!
Danke! Die Lösung des 497 war der Schlüssel zur Lösung der Kette. res (this.syncReady (Token, BatchID)); – DrFiasco
Wirklich, ich würde sehr empfehlen gegen das Einwickeln, dass ein Versprechen in einem anderen Versprechen, weil alles, was Sie tun müssen, ist das Versprechen selbst zurückzugeben. – Goblinlord