Будут ли ключевые слова в javascript ждать замедлить работу приложения? - PullRequest
0 голосов
/ 13 сентября 2018

Я относительно новичок в NodeJS.Мне было интересно, если ключевое слово await замедлит всю программу javascript / nodeJS?

Например,

Если у меня есть много экспресс-маршрутизаторов, записанных на одном файле сервера, и одна функция маршрутизатора вызывает ' await ' для выполнения обещания, будетвсе остальные маршрутизаторы и асинхронные функции останавливаются / приостанавливаются до тех пор, пока обещание не будет выполнено?Или только этот поток будет приостановлен?

В таком случае вызов await вызовет проблемы с производительностью программы Javascript?

Ответы [ 2 ]

0 голосов
/ 13 сентября 2018

ждет, пока обещание будет выполнено, но, поскольку мы знаем, что узел является асинхронным по своей природе, следовательно, другие запросы к приложению не будут влиять на них, они не будут ждать, пока обещание предыдущего запроса не будет выполнено решено.

пример

route 1 -> it will await and iterate through million rows and return sum in response
route 2 -> it will only return '1' in response

Теперь, когда мы сначала вызовем маршрут 1, а затем маршрут 2, вы увидите, что вы все равно сразу получите ответ от маршрута 2, и когда маршрут 1 будет завершен, вы получите этот ответ.

0 голосов
/ 13 сентября 2018

Нет. Хотя await звучит так, как будто оно блокирует, оно является полностью асинхронным (не блокирующим), что также подразумевается в требуемой сигнатуре функции ключевым словом async . Это (намного) более хороший способ использовать обещания. Итак, используйте его в своем коде.

Вы также упомянули потоки, я предлагаю вам игнорировать концепцию потоков при разработке приложений node.js и доверять циклу событий node.js. Просто никогда не используйте блокирующие вызовы ввода-вывода (которые явно названы так, если в имени есть «Синхронизация»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...