Дмитрий Хребтов

Будет ли верным то утверждение, что Promise.raсe - это абстракция, позволяющая не использовать конструкцию с мемоизацией через функцию once?

В данном упражнении функция concat в любом случае произведет вычисления над каждым элементом коллекции, просто она не будет с результатом этого вычисления что-то делать, если 'переключатель' called находится в состоянии true.

Производит ли эти вычисления Promise.race, когда внешний коллбэк сработал (то есть любой из промисов зарезолвился или зареджектился), или все промисы также будут вычислены?

1 0

Будет ли верным то утверждение, что Promise.raсe - это абстракция, позволяющая не использовать конструкцию с мемоизацией через функцию once?

Нет. Здесь же разная семантика. race про коллекцию промисов и самый быстрый ответ, once про одноразовый вызов.

Производит ли эти вычисления Promise.race, когда внешний коллбэк сработал (то есть любой из промисов зарезолвился или зареджектился), или все промисы также будут вычислены?

Экспериментальным путем выяснил что выполнится все:

var promise1 = new Promise(function(resolve, reject) {
    setTimeout(() => (console.log('one'), resolve), 500, 'one');
});

var promise2 = new Promise(function(resolve, reject) {
    setTimeout(() => (console.log('two'), resolve), 100, 'two');
});

Promise.race([promise1, promise2]).then(function(value) {
  console.log(value);
  // Both resolve, but promise2 is faster
});
// expected output: "two"

1
Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →