我在 Node.js 中为 bluebird 编写了测试代码,如下所示:
var Promise = require(‘bluebird’)
var obj = {
func1: function () {
return ‘foo’
},
func2: function () {
return ‘bar’
}
}
console.log("==================================")
Promise.promisifyAll(obj)
obj.func1Async().then(function (result) {
console.log(result)
})
我期望打印“foo”,但实际上没有输出。 有什么问题吗?
最佳答案
看了一会儿,Bluebird promisify 似乎适用于 Node 样式的函数,如下所示:
- 首先可以接受 0..N 个参数
- 最后一个参数始终是回调
- 回调需要按顺序使用(错误、数据)参数调用。
所以在你的情况下,代码应该是:
var obj = {
func1: function (cb) { // note if you add params they need to be before cb and always passed when invoking the func1Async version
cb(null, 'foo'); // null => no error
},
func2: function (cb) {
cb(null, 'bar'); // null => no error
}
}
然后就可以了。丑陋 - 但它应该是这样的。
关于node.js - 为什么结果不是我在 Nodejs promise 中所期望的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41485025/