CNode

fn[Symbol.toStringTag] === 'AsyncFunction' 什么情况下会返回true? -- node async v2.6.1

问答
Mmsforest发布于8 年前最后回复8 年前6 回复4052 浏览0 收藏
function isAsync(fn) {
    return fn[Symbol.toStringTag] === 'AsyncFunction';
}

function wrapAsync(asyncFn) {
    return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;
}

在读这段代码时,想不到isAsync什么情况下会为真?因为asyncFn很多情况下,都是自己写的普通函数,就算是函数里面包含异步代码,那这里也不会为真啊?求解答

查看回复

回复 (6)

Z
zbinlin#1·8 年前

async 函数就会为真呀

M
msforest#2·8 年前
引用 zbinlinasync 函数就会为真呀

@zbinlin async函数就是我们写的普通函数,普通函数的symbol.toStringTag等于undefined,我想知道什么样的async函数的symbol.toStringTag会等于AsyncFunction,能举个列子吗

以下是我理解的asyncFn

async.waterfall([function asyncFn(cb){ //asyncFn[Symbol.toStringTag] === undefined
  cb(null)
}], function(err, res){
  ...
})
A
AnzerWall#5·8 年前
引用 msforest@zbinlin 多谢

@msforest 一楼估计一脸蒙蔽。。

哈哈哈,此async非彼async, async function是es6特性,另一个是async库

参与回复
登录后即可参与回复。登录