我有这两个函数。
async function testAsync(){
console.log('async func')
}
function callback(){
console.log('callback function.')
}
当我在async
上调用then
时,它可以使用,类似于promise
。例如,以下代码有效。
bluebird.resolve().then(()=> console.log('then promise'))
testAsync().then(()=> console.log('then async'))
但是当我在async
上调用nodeify
时,它会出现错误。虽然,它适用于promise
工作 -> bluebird.resolve().nodeify(callback)
错误 -> testAsync().nodeify(callback)
这是我遇到的错误。为什么呢?
TypeError: testAsync(...).nodeify is not a function
错误指出本机诺言对象上没有nodeify
功能。
如果您需要使用此功能,而您确实不应该使用此功能,则必须从定义的承诺实现中获取它,并将其称为诸如p.prototype.nodeify.call(testAsync())
之类的对象,然后希望它不使用任何内部零件承诺实施。
或更好地从承诺实施中提取功能,因为它只是这样的东西:
function nodeify(cb) {
this.then(function (v) { cb(null, v) });
this.catch(function (err) { cb(err) });
}
可以用作nodeify.call(testAsync(), callback)