Używać obietnicy all () do kosztownych obliczeń w javascript? [duplikować]

Nov 26 2020

Czy warto używać obietnicy all () w celu przyspieszenia kosztownych obliczeń? Na przykład:

// Kosztowne obliczenia

const data = [1, 2, 3];

const f = (x) => {
  return x*x; // or a more complex formula
}

// Bez obietnic

const f_data = data.map(f);

// Z obietnicami

const f_data = Promise.all(data.map((e) => Promise((e) => f(e))).then(res => res).catch(...);

Czy będzie jakaś rzeczywista różnica w szybkości wykonywania?

Odpowiedzi

GuerricP Nov 26 2020 at 04:01

Nie, jeśli chcesz przyspieszyć obliczenia, musisz użyć robotników , aby wykorzystać wielowątkowość.

Jeśli używasz Promise.all, wszystkie wywołania zwrotne zostaną umieszczone w kolejce i będą działać w jednym wątku, jeden po drugim.