【发布时间】:2023-03-31 03:13:02
【问题描述】:
我使用以下代码并收到警告
警告:在处理程序中创建了一个承诺,但没有从 它
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);
}
)
我应该怎么做才能避免它?
我看了BB的文档,看来我应该returnpromise
我的问题是在哪里?我猜是在调用函数内部,但不确定如何
这是 inovke 函数
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);
}
}
}
}
};
此外,我还尝试像以下那样返回承诺,但这是行不通的
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);
}
}
}
}
};
我不想抑制警告我想了解如何解决它...
如果我需要添加一些其他信息,请告诉我,我卡在这里:(
【问题讨论】:
标签: javascript node.js promise q bluebird