Wreszcie async
/await
będzie supported we wszystkich głównych przeglądarka wkrótce z wyjątkiem IE. Teraz możemy zacząć pisać bardziej czytelny kod z async
/await
, ale jest haczyk. Wiele osób korzysta z asynchroniczny czekają tak:Jak uruchomić async/czekać równolegle w JavaScript
const userResponse = await fetchUserAsync();
const postsResponse = await fetchPostsAsync();
Podczas gdy ten kod jest czytelny ona ma problem, to uruchamia funkcje w serii, to nie rozpocznie pobieranie posty aż sprowadzanie użytkownika jest zakończona. Rozwiązania są proste, musimy pobierać zasoby równolegle.
Więc to, co chcę zrobić, to (w języku pseudo):
fn task() {
result-1 = doAsync();
result-2 = doAsync();
result-n = doLongAsync();
// handle results together
combinedResult = handleResults(result-1, result-2);
lastResult = handleLastResult(result-n);
}
ładny kawałek kodu tam! Bardzo pomocna –
Mam kilka pytań na temat Twojego kodu. Jak możesz "skomponować" oczekiwaną pulę równoległą. W twoim przykładzie wiesz, że masz dwa zadania do wykonania i zwrócenia wyniku. W jaki sposób mogę na przykład komponować przy użyciu pętli for (powiedzmy, że nie wiem, jak liczą się zadania w momencie pisania skryptu). Mój przypadek użycia: pobieram niektóre identyfikatory z wywołania HTTP, a następnie dla każdego identyfikatora mam zadanie do uruchomienia. Jak równolegle uruchomić wszystkie zadania dla pobranego identyfikatora? – BlackHoleGalaxy
Dzięki, dobre pytanie! Zaktualizuję odpowiedź, gdy znajduję się przed moim komputerem Mac. – NoNameProvided