Ich bin ziemlich überzeugt, dass ich Missverständnisse, wie Versprechungen arbeiten, aber Lose haben, hat es versäumt, mein Problem zu lösen.infinite Schleife in Versprechen fangen mit Rückruffehler
Ich habe bestehenden Code, der ein anderes Modul aufruft, das gerade geändert wurde, um Versprechungen zu verwenden. die alte Version Mit sah wie folgt aus:
function(params, cb) {
.....
asyncFunc(p1, (err, res) => {
if (!err)
.....
cb(null,'msg');
else
cb(err);
};
};
ändert dies:
function(params, cb) {
.....
asyncFuncwithPromise(p1).then(res = > {
... // X
return cb(null,'msg');
}).catch(err => {
cb(err);
});
Wenn der Code in Zeile X eine Ausnahme wirft diese in eine Endlosschleife von Fang geht() -> dann() . Entfernen des Rückrufs aus dem Catch und alles ist in Ordnung. Kann mir jemand erklären?
Ich habe das nie erlebt, aber einen ähnlichen Code geschrieben. Hat etwas mit Ihrem 'asyncFuncwithPromise' und dem' cb' zu tun. Wie wird Ihre Funktion verwendet und wie 'asyncFuncwithPromise' definiert ist? –
Brauchen Sie diese CB-Funktion zu sehen. Tut es, was Sie erwarten? Was gibt es zurück und/oder tun? –
Danke, ich werde in die CB-Funktion (es ist nicht meins) graben, ich wollte nur überprüfen, dass die Grundlagen meiner Arbeit nicht fehlgeleitet sind. – mnsuk