Answer

Answer

t.me/js_test

Ответ:

const handler = (arr, finalStr = "") =>
  !arr.length
    ? finalStr.trim()
    : ([curr, ...rest] = arr) &&
      curr().then((r) => handler(rest, `${finalStr} ${r}`));


Обьяснение:

Функция handler принимает два параметра - массив с функциями(arr) и результирующую строку(finalStr). Если arr пуст - форматируем и возвращаем finalStr. В другом случае разделяем arr на текущую(curr) и остальные функции(...rest), вызываем curr , в .then рекурсивно вызываем handler , передавая в него rest.

Код для проверки:

const functionsArr = [
  () => new Promise((res) => setTimeout(res("JavaScript"), 500)),
  () => new Promise((res) => setTimeout(res("is the best"), 250)),
  () => new Promise((res) => setTimeout(res("programming language."), 150)),
];

const handler = (arr, finalStr = "") =>
  !arr.length
    ? finalStr.trim()
    : ([curr, ...rest] = arr) &&
      curr().then((r) => handler(rest, `${finalStr} ${r}`));

handler(functionsArr).then((res) => {
  console.log(res); // JavaScript is the best programming language.
});


Report Page