... 语法定义的? 我希望实现函数 isDefinedWithAsync,其中: isDe-6ren">
gpt4 book ai didi

javascript - 确定函数是否用 "async"定义

转载 作者:行者123 更新时间:2023-11-29 18:54:13 24 4
gpt4 key购买 nike

我想知道是否有一种方法可以确定函数是使用 async function 还是 async (...) => ... 语法定义的?

我希望实现函数 isDefinedWithAsync,其中:

isDefinedWithAsync(async function() { return null; }) === true;
isDefinedWithAsync(function() { return null; }) === false;
isDefinedWithAsync(async () => null) === true;
isDefinedWithAsync(() => null) === false;

是否可以实现isDefinedWithAsync?如果是这样,怎么办?谢谢!

最佳答案

是的,

直接来自 TC39 async/await Issues :

function isAsync(fn) {
return fn.constructor.name === 'AsyncFunction';
}

这是检查上面的 2 个 async 示例和第三个非异步函数的代码段:

function isAsync(fn) {
return fn.constructor.name === 'AsyncFunction';
}

// async functions
const foo = async () => { }
async function bar () { }

// non-async function
function baz () { }

console.log(isAsync(foo)) // logs true
console.log(isAsync(bar)) // logs true
console.log(isAsync(baz)) // logs false

但正如在该问题的其余评论中所提到的,至少在概念上,您不应该区分async function。 s 和 Promise因为它们的行为相同。

两者都可以以完全相同的方式被await-ed/then-ed。标记为 async 的函数总是隐式返回一个 Promise

关于javascript - 确定函数是否用 "async"定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50102413/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com