gpt4 book ai didi

javascript - Bluebird 返回 promise 丢失警告

转载 作者:行者123 更新时间:2023-11-30 00:08:23 24 4
gpt4 key购买 nike

我使用下面的代码,我得到了警告

Warning: a promise was created in a handler but was not returned from it

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的文档,看来我应该return这个promise

我的问题是在哪里?我猜是在调用函数内部,但不确定如何

这是 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);
}
}
}
}
};

此外,我已尝试返回以下不起作用的 promise

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);
}
}
}
}
};

我不想抑制警告我想了解如何解决它...

如果我需要添加一些额外的信息,请告诉我,我被困在这里:(

最佳答案

我没有测试下面的代码,但你应该有这样的方法:

var Promise = require("bluebird");
var glob = Promise.promisify(require('glob'));

glob("files/*.js").then(function (files) {

return Promise.all(files.map(function (file) {
return invoke(data,response,fn,entity,req);
})
);
}).catch(function (err) {
console.log('error: ', err);
res.status(500).send("Error" + err);
}).finally(function(){
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 {
fn[name](req, res);
}
catch (err) {
reject(err);
}
}
}
};

关于javascript - Bluebird 返回 promise 丢失警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37539266/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com