我们知道在js里面,是可以动态的创建函数的,这在很多时候非常有用。
new Function([arg1[, arg2[, ...argN]],] functionBody)
这是因为有有内置的全局构造函数Function,那在js 里面,可以类似的动态创建异步函数AsyncFunction 吗?有全局的构造函数AsyncFunction吗?
我们在控制台尝试一下就知道,并没有全局的构造函数AsyncFunction。
但有一个好消息是,虽然全局的AsyncFunction不存在,但不表示AsyncFunction构造函数不存在,我们可以用一些技巧来获取他。
AsyncFunction=Object.getPrototypeOf(async function(){}).constructor
这时候,我们其实已经拿到了AsyncFunction,可以使用类似的方法来进行动态创建函数了。
new AsyncFunction([arg1[, arg2[, ...argN]],] functionBody)
例如:
// Shim for allowing async function creation via new Function const AsyncFunction = Object.getPrototypeOf(async function(){}).constructor; // Usage const fetchPage = new AsyncFunction("url", "return await fetch(url);"); fetchPage("/").then(response => { ... });
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/AsyncFunction