我们知道 JavaScript 语言允许通过Funtion()
生成函数,async
函数能通过这种方式生成吗?
我喜欢 JavaScript 的一点是,有很多方法最终可以完成相同的功能,创建函数就是一个例子。创建函数有好几种模式,其中一种可能是你看到最少的一种 new Function
method:
/* new Function(arg1, arg2 (...), body) */
const myFunction = new Function('users', 'salary', 'return users * salary');
如果你想使用new Function
方法创建async
函数该怎么写呢?你要机智一点,多亏了 MDN,找到了一个答案:
// 通过新的方法创建异步函数
const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor;
// 使用
const fetchPage = new AsyncFunction("url", "return await fetch(url);");
fetchPage("/").then(response => { ... });
使用 Object.getPrototypeOf(async function(){}).constructor
这个方法非常清新,因为原生方法根本 AsyncFunction
不存在。现在你可以使用它创建异步函数了。
链接
- 原文链接 - https://davidwalsh.name/async...
- 原文中的
method
- https://davidwalsh.name/new-f...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。