测试promise,请问我这样写为什么得到我预期的?
发布于 9 年前 作者 cool-firer 4241 次预览 最后一次回复是 9 年前 来自 问答
var Promise = require('bluebird')
var obj = {
func1: function () {
return 'hehe'
},
func2: function () {
return 'xix'
}
}
console.log("==================================")
Promise.promisifyAll(obj)
obj.func1Async().then(function (result) {
console.log(result)
})
定义一个obj对象,把它promise化,本来想通过异步函数func1Async再调用then可以得到fun1的返回值,结果程序什么输出也没有? 是我理解错了么?求大神解答
8 回复
应该用回调
我记得promisifyAll要求函数的参数都是node模式的,即两个参数,一个err,一个data
@steambap 那怎么写? var obj = { func1: function (err, data) { return ‘foo’ }, func2: function () { return ‘bar’ } } 这样么?也不行啊
@eggggger 怎么弄,头疼。
一直不敢用这个- -不知道该怎么用- -原来是node类似的就可以了学习了
@KingTree 能稍加解释么?大神
@cool-firer
fs.readFile函数封装成Promise :
所以说 Promise.promisifyAll 只能把带有callback 的函数才能转成Promise。
具体的去看 => 自己动手实现一个简单的Promise/A+的Promisify函数 https://cnodejs.org/topic/56cd6234e135f51a1ae89b15