Мемоизация promise через delay и force
delay откладывает работу на будущее, а force выполняет эту работу не более одного раза и повторно использует мемоизированный результат.
Как два вызова force могут привести только к одному вычислению?
- Разделение создания promise и применения force
- Наблюдение первого вычисления при force и повторного использования мемоизированного значения
- Использование счетчика эффектов для обнаружения скрытых вычислений
Создание later не выполняет его тело. Первый вызов force изменяет значение calls с 0 на 1 и сохраняет полученное значение в promise.
Второй вызов force возвращает сохраненное значение без повторного выполнения тела. Конечное значение calls остается равным 1, что делает мемоизацию заметной в результате.
- Вывод
- —
- Значение
- —
- Диагностика
- —
Первая программа возвращает (1 1 1).
Найдите одно событие force с вычисленным результатом и последующее событие force с результатом попадания в мемоизацию. Они относятся к одному и тому же размещению promise.
Измените программу и сравните результат.
Выполните force для later еще три раза и добавьте calls в конец результата. Предскажите, какие значения могут измениться.
Показать подсказку
Как только promise сохраняет значение, последующие операции force возвращают его без вычисления отложенного тела.