我想知道是否有办法确定函数是否是使用async function
或async (...) => ...
语法定义的?
我正在寻找实现以下功能的功能isDefinedWithAsync
:
isDefinedWithAsync(async function() { return null; }) === true;
isDefinedWithAsync(function() { return null; }) === false;
isDefinedWithAsync(async () => null) === true;
isDefinedWithAsync(() => null) === false;
Run Code Online (Sandbox Code Playgroud)
是否可以实施isDefinedWithAsync
?如果是这样,如何?谢谢!
是的,
直接来自TC39 async/await 问题:
function isAsync(fn) {
return fn.constructor.name === 'AsyncFunction';
}
Run Code Online (Sandbox Code Playgroud)
这是检查async
上面的 2 个示例和第 3 个非异步函数的代码段:
function isAsync(fn) {
return fn.constructor.name === 'AsyncFunction';
}
Run Code Online (Sandbox Code Playgroud)
但正如关于该问题的其余评论中所述,您不应至少在概念上区分async function
s 和Promise
s,因为它们的行为相同。
两者都可以以完全相同的方式await
-ed/ then
-ed。一个async
标记功能总是含蓄地返回Promise
。
归档时间: |
|
查看次数: |
1078 次 |
最近记录: |