Seb*_*iuc 5 node.js promise bluebird
使用"bluebird": "^3.4.6"
:
var Promise = require('bluebird');
Promise.config({
warnings: true,
longStackTraces: true,
cancellation: true,
monitoring: true
});
function getPromise1(param1, param2) {
return new Promise( (resolve, reject) => {
console.log(param1, param2);
resolve();
} );
}
function getPromise2(param1, param2) {
return new Promise( (resolve, reject) => {
console.log(param1, param2);
resolve();
} );
}
function mainFunc(param1, param2) {
getPromise1(param1, param2)
.then(getPromise2(param1, param2));
}
mainFunc("param1", "param2");
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到:
$ node index.js
param1 param2
param1 param2
(node:95984) Warning: .then() only accepts functions but was passed: [object Object]
Run Code Online (Sandbox Code Playgroud)
如何在没有警告的情况下修改这段代码来做同样的事情?这个警告是相关的还是只是对开发人员的提醒?
编辑:是的。我理解警告的文本,即.then
当它实际Promise
从getPromise2
函数中获取一个对象时期望一个函数。然而,承诺被调用。(有用的反对票)
我的困境是如何以这样的方式链接承诺,即在第一个承诺执行后会在函数中调用一个新的承诺then
。
该getPromise2()
呼叫将立即创建承诺; 然后它会被忽略,then
而不是传递给回调。要实际链接它们,您需要使用
function mainFunc(param1, param2) {
return getPromise1(param1, param2).then(function(promise1result) {
return getPromise2(param1, param2);
});
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3085 次 |
最近记录: |