Сложение через удалённый вызов
Условие
addRemote(a, b) складывает только два числа и делает это асинхронно. Напиши add(...args), которая возвращает промис с суммой любого количества аргументов. Оператор плюс использовать нельзя. Ноль аргументов даёт 0, один - само число.
Что проверяют тесты
три числа
шесть чисел
один аргумент - без вызовов
без аргументов
число вызовов на единицу меньше количества аргументов
Как подойти
Прямолинейное решение - последовательная свёртка за n−1 вызовов, но все они выстроены в цепочку, и общее время равно сумме задержек. Улучшение, которое ждут на follow-up: складывать попарно деревом через Promise.all, тогда глубина ожидания логарифмическая вместо линейной, при том же числе вызовов. Граничные случаи с нулём и одним аргументом надо назвать самому - в условии их нет.
Подсказки: 3
- Свёртка последовательными вызовами: аккумулятор плюс следующий аргумент.
- Один аргумент возвращается без единого удалённого вызова.
- Попарное сложение деревом сократит число последовательных ожиданий.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.