Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.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
如何取消Ajax排队回调?(如何在Javascript中取消长时间运行的方法?)_Javascript_Android_Ajax_Cancellation_Eventqueue - Fatal编程技术网

如何取消Ajax排队回调?(如何在Javascript中取消长时间运行的方法?)

如何取消Ajax排队回调?(如何在Javascript中取消长时间运行的方法?),javascript,android,ajax,cancellation,eventqueue,Javascript,Android,Ajax,Cancellation,Eventqueue,我对javascript有点陌生 这不是一个网站场景,但android webview仍然使用本地javascript和html,css ist。我试图计算电子书的总长度,它由n个html文档组成 我所做的是使用n个AJAX请求来请求本地文件,在回调中,我将其附加到当前文档并计算文档长度(通过element.scrollWidth,然后它似乎会触发实际布局,可能需要几秒钟的时间——对于每个请求,都是繁重的工作) 现在我可能需要取消整个操作。 但是 正如我所了解的,javascript使用事件队列

我对javascript有点陌生

这不是一个网站场景,但android webview仍然使用本地javascript和html,css ist。我试图计算电子书的总长度,它由n个html文档组成

我所做的是使用n个AJAX请求来请求本地文件,在回调中,我将其附加到当前文档并计算文档长度(通过element.scrollWidth,然后它似乎会触发实际布局,可能需要几秒钟的时间——对于每个请求,都是繁重的工作)

现在我可能需要取消整个操作。

但是

正如我所了解的,javascript使用事件队列,因此虽然AJAXes是并行的,但回调是同步的。所以在我的例子中,AJAXes很快,但是回调需要很长时间。问题就在这里当我从android调用我的cancel()时,它只是放在事件队列中,实际上是在所有回调之后,所以这个cancel方法无法对已经排队的事件循环回调做任何事情,比如更改一些cancel=true全局变量,甚至中止也不会做任何事情,因为所有ajaxed都返回了,只有回调在队列中等待


有没有办法取消这个?还是我需要一个完全不同的方法?(我的猜测是否定的,因为在java中,cancel方法会在不同的线程上运行,而在JS中,everyhing会在单个线程上运行)

您尝试了什么?关于堆栈溢出,有很多答案显示了jQuery解决这个问题的方法,比如我的问题是中止ajax回调,而不是请求?关于堆栈溢出,有很多答案显示了jQuery解决这个问题的方法,比如我的问题是中止ajax回调,而不是请求。