无法在异步函数上调用nodeify,但可以调用then()

时间:2018-12-18 17:17:31

标签: node.js promise async-await

我有这两个功能。

async function testAsync(){
    console.log('async func')
}

function callback(){
    console.log('callback function.')
}

当我在then上呼叫async时,它的工作原理类似于promise。例如,以下代码有效。

bluebird.resolve().then(()=> console.log('then promise'))
testAsync().then(()=> console.log('then async'))

但是,当我在nodeify上调用async时,会出现错误。虽然,它适用于promise

Works-> bluebird.resolve().nodeify(callback)

错误-> testAsync().nodeify(callback)

这是我得到的错误。为什么这样?

TypeError: testAsync(...).nodeify is not a function

1 个答案:

答案 0 :(得分:0)

该错误表明本机Promise对象上没有echo "\ndaemon off;" >> /etc/nginx/nginx.conf && \ 函数。

如果您确实需要使用此功能,则必须从定义它的promise实现中获取它,并在类似nodeify的对象上调用它,然后希望它不会使用promise实现的任何内部部分。

或者更好地从promise实现中提取函数,因为它只是这样:

p.prototype.nodeify.call(testAsync())

可以用作function nodeify(cb) { this.then(function (v) { cb(null, v) }); this.catch(function (err) { cb(err) }); }