Jak vytvořit asynchronní funkci pomocí „nové funkce“

Jedna věc, kterou na JavaScriptu miluji, je, že existuje mnoho způsobů, jak splnit stejný úkol, jedním z takových příkladů je vytváření funkcí. Existuje několik vzorů pro funkce; jedním z posledních, které vidíte, je new Function metoda:

/* new Function(arg1, arg2 (...), body) */
const myFunction = new Function('users', 'salary', 'return users * salary');

Co když chcete použít tento new Function způsob vytvoření asynchronní funkce? Musíte být trochu chytří a díky MDN máme odpověď:

// 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 => { ... });

Použití Object.getPrototypeOf(async function(){}).constructor je super chytrý, jako nativní AsyncFunction neexistuje. Nevěřím, že jsem někdy použil new Function vzor, ​​ale to neznamená, že ne! A nyní je můžete nastavit jako asynchronní!