fn[Symbol.toStringTag] === 'AsyncFunction' 什么情况下会返回true? -- node async v2.6.1
function isAsync(fn) {
return fn[Symbol.toStringTag] === 'AsyncFunction';
}
function wrapAsync(asyncFn) {
return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;
}
在读这段代码时,想不到isAsync
什么情况下会为真?因为asyncFn
很多情况下,都是自己写的普通函数,就算是函数里面包含异步代码,那这里也不会为真啊?求解答
6 回复
async 函数就会为真呀
@zbinlin async函数就是我们写的普通函数,普通函数的symbol.toStringTag
等于undefined
,我想知道什么样的async函数的symbol.toStringTag
会等于AsyncFunction
,能举个列子吗
以下是我理解的asyncFn
async.waterfall([function asyncFn(cb){ //asyncFn[Symbol.toStringTag] === undefined
cb(null)
}], function(err, res){
...
})
@msforest (async function () {})[Symbol.toStringTag] === 'AsyncFunction'
@zbinlin 多谢
@msforest 一楼估计一脸蒙蔽。。
哈哈哈,此async非彼async, async function是es6特性,另一个是async库
@AnzerWall 确实,只可意会啊。。。