【发布时间】:2018-05-15 16:58:43
【问题描述】:
我的代码如下:(node.js代码)
'use strict';
var Promise = require('bluebird');
function promised()
{
return Promise.resolve();
}
function backgroundJob()
{
return Promise.resolve();
}
function doBackgroundJob()
{
// this is an intentional runaway promise.
backgroundJob()
.catch(function (err)
{
console.log('error', err);
});
}
function test()
{
return promised()
.then(function ()
{
doBackgroundJob();
return null; // without this, bluebird displays the warning
});
}
doBackgroundJob() 做一个后台工作,所以它不需要返回一个承诺。但由于它创建了一个承诺,当在 then() 中调用该函数时,在 then() 中没有明确的 return null 时,bluebird 会向控制台打印以下警告。 '警告:在处理程序中创建了一个承诺,但没有从它返回'。
这有点不公平,因为调用者不需要知道函数使用了 Promise。如何让蓝鸟忽略调用者中then() 中没有return null 的警告?
我不想禁用警告,因为它非常有用。
【问题讨论】:
-
您可以在 bluebird 中禁用一般警告:bluebirdjs.com/docs/api/promise.config.html
-
@Thomas 谢谢,但我不想禁用警告。我已经更新了问题。
-
“如何让 bluebird 忽略警告” 但 “我不想禁用警告,因为它非常有用。” i> 我很困惑。
-
@Thomas 我只想忽略这种情况下的警告。该警告通常非常有用。
-
promised().then(function(){ setTimeout(doBackgroundJob) });我认为您不会介意这里的这几毫秒延迟。另一方面,return null有什么问题?
标签: javascript promise bluebird