Помогите создать собственную реализацию синтаксиса async await используя Promise и функции-генераторы. Если использование стандартного синтаксиса выглядит так:
async function fetchData (id) {
let user = await fetchUser(id),
friends = await fetchFriends(id);
return {
user,
friends
};
}
то собственное решение должно выглядеть так:
let fetchData = _async(function* (id) {
let user = (yield fetchUser(id)),
friends = (yield fetchFriends(id));
return {
user,
friends
};
});
Задача написать функцию _async, которая принимает в качестве аргумента функцию-генератор и возвращает новую функцию, которая в свою очередь возьмёт под контроль управление итератором и вернёт Promise с конечным результатом.