javascript - 当收到多个异步获取响应时,您如何选择您想要的响应(即用户请求的响应)?

标签 javascript database asynchronous fetch

以 onChange 搜索栏为例,当用户在搜索栏中输入内容时会返回结果,如果多个获取请求异步发送到客户端,并且所需响应先于不需要的响应到达,我们如何“选择” “用户想要接收的响应,同时丢弃不需要的响应?

我知道有执行此类操作的特定术语和方法,但我似乎无法通过谷歌找到它。任何帮助,将不胜感激!很高兴回答详细的问题。

最佳答案

解决这个问题的方法有很多,以下是我能想到的 -

跟踪列表中向服务器发出的请求,每当用户输入更改时,取消所有仍在进行中的先前请求,然后使用最新的用户输入发送下一个请求。当请求成功时,从响应中提取数据。

但是,您可能会在这里遇到竞争条件,因此您需要先从服务器获取响应,然后才能取消请求。

为了解决竞争条件,您可以在每个请求中附加一个标识符(例如时间戳、计数器、用户输入的哈希值),该标识符将由服务器随响应一起发回。您跟踪最新的请求标识符,每当从服务器获得成功响应时,将其标识符与您存储的最新标识符进行比较,如果比较失败则丢弃响应。

关于javascript - 当收到多个异步获取响应时,您如何选择您想要的响应(即用户请求的响应)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58398591/

相关文章:

javascript - 无法让 tampermonkey 脚本工作

javascript - ES6 箭头/函数等效

javascript - KnockoutJS foreach 嵌套数组的单个元素

javascript - 我正在使用 TypeForm,需要从 .js 脚本中自动填充隐藏字段

java - 在EJB中使用异步注释时出错

database - 如何从 Informix 中的名称获取约束详细信息?

mysql - 不同表使用相同的字段名进行联合查询有问题吗?

database - 快速数据/时间覆盖检查算法

javascript - 可以通过异步方法使用 _.sumBy

c# - asp.net v4 中循环内的异步任务