Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何通过new Function创建 async 函数 - 译 #6

Open
lvisei opened this issue Oct 3, 2020 · 0 comments
Open

如何通过new Function创建 async 函数 - 译 #6

lvisei opened this issue Oct 3, 2020 · 0 comments
Labels
ES 相关 JavaScript 相关

Comments

@lvisei
Copy link
Owner

lvisei commented Oct 3, 2020

如何通过new Function创建 async 函数 - 译

我们知道 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 不存在。现在你可以使用它创建异步函数了。

链接

@lvisei lvisei added the ES 相关 JavaScript 相关 label Oct 3, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ES 相关 JavaScript 相关
Projects
None yet
Development

No branches or pull requests

1 participant