Я создаю приложение, используя Express.js, мопса и мангуста.У меня есть много обработчиков, которые делают несколько асинхронных запросов БД с использованием await.В целях приблизительной оценки того, сколько времени потребуется для выполнения этих обработчиков, а также того, как долго каждый из ожидающих будет блокировать цикл событий, я добавил библиотеку block-at, которая выводит время в Ms каждый раз, когда цикл событийзаблокирован.Для такого обработчика, как это:
Const handler = async (req, res, next) => {
Const data1 = await getData1().exec()
// Do something
const data2 = await getData2().exec()
// Do something with data1 and data2
const data3 = await getData3().exec()
// Do something with data1, data2, and data3
}
Я увижу один выход из заблокированной функции, например: Блокировано на 734.22 Ms "
Это сбивает с толку, потому что я ожидал увидеть 3отдельные записи, по одной для каждого ожидающего вызова, как он вызывается, затем регистрирует свой обратный вызов и затем возвращается в цикл обработки событий. Насколько я понимаю, использование асинхронных вызовов, подобных этому, не блокирует цикл обработки событий до конца функции-обработчика, но этовывод говорит об обратном. Если мое понимание верно, каков наилучший способ точно измерить то, что происходит в цикле событий в обработчиках, подобных этому, которые могут со временем увеличиваться?
Кроме того, почти одна секунда выглядит какдостаточно долгое время для блокировки цикла событий для извлечения некоторых данных и выполнения бизнес-логики. Существуют ли стратегии для ускорения этого?