蓝鸟承诺泄漏警告
Bluebird promise leak warnings
在 public 库中 spex that I wrote awhile ago and that proved to be very reliable, I've been struggling to locate the reason why Bluebird 用 Warning: a promise was created in a handler but was not returned from it
警告我。
在一次又一次尝试解决之后,我几乎放弃了,现在准备将最高赏金放在解决方案上。
完成测试应用程序:
'use strict';
var promise = require('bluebird');
var spex = require('spex')(promise);
function factory(index) {
if (index < 2) {
return promise.resolve(index);
}
}
spex.sequence(factory)
.then(data=> {
console.log("success");
})
.catch(error=> {
console.log("error");
});
完整的控制台输出:
Warning: a promise was created in a handler but was not returned from it
at Object.factory (D:\NodeJS\tests\test4.js:8:24)
at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:69:44)
at Object.resolve (D:\NodeJS\tests\node_modules\spex\lib\utils.js:90:9)
at loop (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:106:28)
at next (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:160:25)
at $utils.resolve.call.reject.index (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:144:25)
at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:86:17)
at D:\NodeJS\tests\node_modules\spex\lib\utils.js:80:25
at processImmediate [as _immediateCallback] (timers.js:383:17)
From previous event:
at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:77:22)
at Object.resolve (D:\NodeJS\tests\node_modules\spex\lib\utils.js:90:9)
at loop (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:106:28)
at D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:184:9
From previous event:
at promise (D:\NodeJS\tests\node_modules\spex\lib\index.js:96:24)
at Object.sequence (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:100:12)
at Object.sequence (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:193:29)
at Object.<anonymous> (D:\NodeJS\tests\test4.js:12:6)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
success
- SPEX 库版本 - 任何
- Bluebird 版本 - 任何 3.X,开启
DEBUG
模式。
- Node.js 版本 - 任何
- OS - 任意
解决方案(如 here 所建议)是 return null
来自 onFulfilled
没有任何其他功能的 return。
例如:
.then(data=> {
console.log("success");
})
大概应该是:
.then(data=> {
console.log("success");
return null;
})
在 public 库中 spex that I wrote awhile ago and that proved to be very reliable, I've been struggling to locate the reason why Bluebird 用 Warning: a promise was created in a handler but was not returned from it
警告我。
在一次又一次尝试解决之后,我几乎放弃了,现在准备将最高赏金放在解决方案上。
完成测试应用程序:
'use strict';
var promise = require('bluebird');
var spex = require('spex')(promise);
function factory(index) {
if (index < 2) {
return promise.resolve(index);
}
}
spex.sequence(factory)
.then(data=> {
console.log("success");
})
.catch(error=> {
console.log("error");
});
完整的控制台输出:
Warning: a promise was created in a handler but was not returned from it
at Object.factory (D:\NodeJS\tests\test4.js:8:24)
at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:69:44)
at Object.resolve (D:\NodeJS\tests\node_modules\spex\lib\utils.js:90:9)
at loop (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:106:28)
at next (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:160:25)
at $utils.resolve.call.reject.index (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:144:25)
at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:86:17)
at D:\NodeJS\tests\node_modules\spex\lib\utils.js:80:25
at processImmediate [as _immediateCallback] (timers.js:383:17)
From previous event:
at loop (D:\NodeJS\tests\node_modules\spex\lib\utils.js:77:22)
at Object.resolve (D:\NodeJS\tests\node_modules\spex\lib\utils.js:90:9)
at loop (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:106:28)
at D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:184:9
From previous event:
at promise (D:\NodeJS\tests\node_modules\spex\lib\index.js:96:24)
at Object.sequence (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:100:12)
at Object.sequence (D:\NodeJS\tests\node_modules\spex\lib\ext\sequence.js:193:29)
at Object.<anonymous> (D:\NodeJS\tests\test4.js:12:6)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:139:18)
at node.js:968:3
success
- SPEX 库版本 - 任何
- Bluebird 版本 - 任何 3.X,开启
DEBUG
模式。 - Node.js 版本 - 任何
- OS - 任意
解决方案(如 here 所建议)是 return null
来自 onFulfilled
没有任何其他功能的 return。
例如:
.then(data=> {
console.log("success");
})
大概应该是:
.then(data=> {
console.log("success");
return null;
})