Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何处理一个接一个请求对同一API的并发响应顺序?_Javascript_Asynchronous_Concurrency_Promise_Xmlhttprequest - Fatal编程技术网

Javascript 如何处理一个接一个请求对同一API的并发响应顺序?

Javascript 如何处理一个接一个请求对同一API的并发响应顺序?,javascript,asynchronous,concurrency,promise,xmlhttprequest,Javascript,Asynchronous,Concurrency,Promise,Xmlhttprequest,我有一个autocomplete函数,当用户键入某个内容时,会进行API调用,然后debounce函数会延迟后续的API调用,直到用户键入为止 比方说,用户停止键入并拨打电话,电话立即返回 但第一次呼叫在第二次呼叫返回后返回。该函数将接收到的最新数据保存在内存中,并显示旧查询的自动完成结果,但不显示最新查询 如何在提出第二个请求之前取消第一个请求 或者,当函数已经收到最新查询的响应时,是否有方法忽略第一次API调用的结果 我能想到的一个解决方案是将时间戳与数据一起存储在内存中,这样当第一个请求响

我有一个autocomplete函数,当用户键入某个内容时,会进行API调用,然后debounce函数会延迟后续的API调用,直到用户键入为止

比方说,用户停止键入并拨打电话,电话立即返回

但第一次呼叫在第二次呼叫返回后返回。该函数将接收到的最新数据保存在内存中,并显示旧查询的自动完成结果,但不显示最新查询

如何在提出第二个请求之前取消第一个请求

或者,当函数已经收到最新查询的响应时,是否有方法忽略第一次API调用的结果

我能想到的一个解决方案是将时间戳与数据一起存储在内存中,这样当第一个请求响应时,我就可以检查时间戳,如果它比第二个调用旧,那么就忽略它

我能想到的另一个解决方案是创建一个XMLHttpRequest请求,然后在创建新请求之前基本上中止先前的请求

看来没有办法放弃承诺


请给出可能的解决方案。

是否有一个可以考虑的异常控制器?你确实错过了路旁的火车way@Novy是的,我想可以用。我将尝试使用它,并承诺中止先前的异步请求。当然,我们会尝试添加一个代码笔链接来重现这个场景。谢谢。堕胎控制器是你可以考虑的吗?你确实错过了路旁的火车way@Novy是的,我想可以用。我将尝试使用它,并承诺中止先前的异步请求。当然,我们会尝试添加一个代码笔链接来重现这个场景。谢谢