javascript - 检查变量是否为“异步函数”类型
问题描述
给定一个变量,定义如下:
const f = async function() {/* ... */};
如何检查变量f
是否属于类型async function
?
我已经找到了这个解决方案:
f.constructor.name === "AsyncFunction";
但“f.constructor.name”与 IE11 不兼容。还有其他想法吗?
我知道异步函数在 IE11 中不起作用,......但它们通过 babel 编译过程工作。这个想法是找到一种方法来检测像 node.js 这样与 IE11/babel 兼容的环境中的异步函数
解决方案
这似乎是个坏主意。有很多函数实际上是异步的(返回一个 Promise),但没有被标记为这样(也许它们被编译为浏览器支持)。
如果你真的想测试一个函数是否是异步的,最好测试一下返回值是否有一个.then
属性:
const maybeTask = f()
if ('then' in maybeTask) {
maybeTask.then( .... )
}
推荐阅读
- java - 缓冲区链接和装饰原理 Java I/O
- svg - Labeled Google Corechart 传说中的问题
- java - Appium 在错误的目录中寻找 java
- docker - Filebeat 无法作为 docker 容器启动
- python - 将列表乘以浮点数?
- c# - 适用于 .NET 可用性的 PageSpeed Insights API V6 客户端库
- angular - 在 angular7 中,如何从 2 个不同的依赖 http 调用中获得组合响应。第一个 http 调用返回一个对象数组和其他相关数据
- node.js - 节点 - 中间件未应用 req 属性
- python - python中对二维列表元素的内存引用是否连续?
- while-loop - 如何在从文件 B 读取值时剪切文件 A 的每第 n 行?