При получении нескольких асинхронных ответов извлечения, как вы можете выбрать тот, который вы хотите (то есть тот, который запросил пользователь)? - PullRequest
1 голос
/ 15 октября 2019

На примере панели поиска onChange, где результаты возвращаются при вводе пользователем в панель, если несколько запросов на выборку отправляются клиенту асинхронно с желаемым ответом, поступающим перед нежелательным ответом, как мы можем «выбрать»"ответ, который пользователь намеревался получить при отбрасывании нежелательного ответа?

Я знаю, что есть определенная терминология и метод для выполнения такого рода операций, но я не могу найти его через Google. Любая помощь будет оценена! Рад ответить на вопросы, чтобы уточнить.

1 Ответ

0 голосов
/ 15 октября 2019

Существует много способов решения этой проблемы, вот один из тех, о которых я могу подумать:

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

Однако вы можете столкнуться с условиями гонки здесь, поэтому вы получите ответ от сервера, прежде чем сможете отменить запрос.

Чтобы решить условие состязания, вы можете прикрепить идентификатор (например, отметку времени, счетчик, хэш ввода пользователя) к каждому запросу, который будет отправлен сервером обратно с ответом. Вы отслеживаете последний идентификатор запроса и всякий раз, когда получаете успешный ответ от сервера, сравниваете его идентификатор с последним сохраненным вами идентификатором и отбрасываете ответ, если сравнение не удается.

...