Асинхронный НЕ означает «несколько потоков». Подумайте о многих событиях щелчка, запускаемых подряд, до обработки обработчика первого щелчка. Одновременно может быть обработано только одно действие, а остальные будут ожидать выполнения.
Языки, управляемые событиями, такие как Javascript, работают на основе очереди. Javascript в фоновом режиме по сути имеет одну гигантскую очередь, в которую помещаются события и асинхронные ответы. По завершении определенного фрагмента обработки обрабатывается следующий элемент из очереди.
Эти очереди иногда называют «Runloops». Javascript будет вращаться в бесконечном цикле, извлекая событие из очереди, обрабатывая его и возвращаясь в очередь для другой части работы.
Многопоточность может быть достигнута в (более новых) версиях Javascript с использованием Web Workers , но они явно включены. Ищите их, если вам интересно.
Чтобы ответить на ваш вопрос, просто прикрепите обратный вызов к вашему асинхронному запросу, и он завершит обработку, даже если другой ответ будет возвращен на полпути. Другой ответ будет «ждать», пока текущее событие не будет обработано.