Показать сообщение отдельно
  #4 (permalink)  
Старый 21.01.2022, 16:09
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сделал такой пример для теста...
const app = require('express')()

const host = '127.0.0.1'
const port = 7000

app.get('/start1', (req, res) => {
	test()
		.then(_ => res.send('test1 завершил работу'))
})

app.get('/start2', (req, res) => {
	test()
		.then(_ => res.send('test2 завершил работу'))
})

app.use((req, res, next) => {
  res.status(404).type('text/plain')
  res.send('Not found')
})

app.listen(port, host, function () {
  console.log(`Server listens http://${host}:${port}`)
})
let i = 0
function test() {
	return new Promise((resolve, reject) => {
		const number = ++i
		console.log('старт скрипта ' + number)
		setTimeout(_ => {
			console.log('конец скрипта ' + number)
			resolve()
		}, 6000)
	})
}

Все повторилось как и в твоем варианте...
Если стартовать start1+start1, сообщения выводятся так
старт скрипта 1
конец скрипта 1
старт скрипта 2
конец скрипта 2

Т.е. пока не получит ответ первый запрос, вторая обработка стартовать не станет.

Если стартовать start1+start2, сообщения выводятся
старт скрипта 3
старт скрипта 4
конец скрипта 3
конец скрипта 4
Ответить с цитированием