Краткий ответ: Нет.
В документации говорится об отсутствии использования синхронных версий функций, таких как readfileSync из файловой системы nodeJS или bcrypt.compareSync, например.Синхронные вызовы блокируют цикл событий в nodeJS.Так что ничего не происходит, пока вы ожидаете завершения синхронного вызова.Вся программа остановлена, пока не закончится этот метод.Это плохо в однопоточной системе, такой как nodeJS.
Нет причин для переноса функций, представляющих собой простые вычисления или манипуляции с массивами, с обратными вызовами или обещаниями.
Это просто говорит, что если есть библиотека/ method, который предлагает синхронную версию метода, старайтесь избегать этого метода.
Проверьте: https://nodejs.org/en/docs/guides/blocking-vs-non-blocking/
Выполнение JavaScript в Node.js является однопоточным, поэтому параллелизм относитсяк способности цикла событий выполнять функции обратного вызова JavaScript после завершения другой работы.Любой код, который, как ожидается, будет выполняться одновременно, должен позволять циклу событий продолжаться при выполнении операций не-JavaScript, например операций ввода-вывода.
В качестве примера давайте рассмотрим случай, когда каждый запросдля веб-сервера требуется 50 мс, а 45 мс из этих 50 мс - это ввод-вывод базы данных, который может выполняться асинхронно.Выбор неблокирующих асинхронных операций освобождает 45 мс на запрос для обработки других запросов.Это существенное различие в пропускной способности, если вы выбираете использование неблокирующих методов вместо блокирующих методов.
Цикл обработки событий отличается от моделей во многих других языках, где могут быть созданы дополнительные потоки для одновременной работы.
По поводу дополнительных накладных расходов с упаковкой всего в обещания.Ответ до сих пор нет.
Вы не почувствуете никакой разницы в
function sum(x,y) {
return x+y
}
const ans = sum(1,2)
console.log(ans) // 3
и
function sum(x,y) {
return Promise.resolve(x+y) // Shorthand for your new Promise
}
sum(1,2).then(ans => {
console.log(ans) //3
})