ich den folgenden Code verwenden, und ich bekam die WarnungBlauer Vogel Rückkehr Versprechen fehlende Warnung
Warnung: ein Versprechen in einem Handler erstellt wurde, wurde aber nicht von es
var Promise = require("bluebird");
var glob = Promise.promisify(require('glob'));
glob("files/*.js")
.then(function (files) {
files.forEach(function (file) {
...
invoke(data,response,fn,entity,req);
});
}).catch(function (err) {
console.log('error: ', err);
}
)
zurück
Was sollte ich tun, um es zu vermeiden?
las ich die Dokumentation von BB und es scheint, dass ich das Versprechen, wo
meine Frage ist
return
sollte? Ich denke, dass in der Funktion aufrufen, aber nicht sicher, wie
dies die Funktion inovke ist
var invoke = function (data,res,fn,entity,req) {
....
for (var data in entity.app[0]) {
var name = entity.app[0].function;
try {
fn[name](req, res);
}
catch (err) {
res.status(500).send("Error" + err);
}
if (!res.headerSent) {
res.end("done", 200);
}
}
}
}
};
zusätzlich habe ich versucht, das Versprechen wie folgt welche nicht funktioniert
var invoke = function (data,res,fn,entity,req) {
....
return new Promise(function (resolve, reject) {
for (var data in entity.app[0]) {
var name = entity.app[0].function;
try {
resolve(fn[name](req, res));
}
catch (err) {
res.status(500).send("Error" + err);
}
if (!res.headerSent) {
res.end("done", 200);
}
}
}
}
};
ich zurückkehren nicht wollen, um die Warnung zu unterdrücken Ich möchte verstehen, wie man es löst ...
Wenn ich einige zusätzliche Informationen hinzufügen müssen, lassen Sie mich bitte wissen, Im stecken hier :(
Vielen Dank! Dies löst das Problem, das (zumindest für mich) kompliziert zu verstehen war. Könnten Sie bitte, warum das Problem lösen und nicht einfach zurück ... –
Sie mussten das neue Versprechen an die Kette zurückgeben, und da Sie mehrere Versprechen erstellt haben, muss Promise.all() verwenden. Wenn Sie den Fehler bei der invoke-Funktion abfangen, müssen Sie nur dieses spezielle Versprechen ablehnen, um den Fehler auf die Kette zu übertragen. – Roberto14