我对javascript有点陌生。
这不是网站场景,而是带有本地 javascript 和 html 的 android webview,css ist 仍在使用。我正在尝试找出包含n 个html 文档的电子书的总长度。
我正在做的是我使用n AJAX 请求来请求本地文件,在回调中我附加到当前文档并计算文档长度(通过 element.scrollWidth,然后似乎触发实际布局并且可能需要几秒钟 -对于每一个要求,繁重的工作)
现在我可能需要取消整个操作。
但
正如我了解到的,javascript 使用事件队列,所以虽然 AJAX 是并行的,但回调是同步的。所以在我的情况下,AJAX 很快,但回调需要很长时间。问题就在这里。当我从android调用我的cancel()时,它只是放在事件队列中,事实上是在所有回调之后,所以这个cancel方法无法对已经排队的事件循环回调做任何事情,比如改变一些cancel =真正的全局变量,即使中止也无济于事,因为所有 ajaxed 都返回了,只是回调在队列中等待。
有没有办法取消这个?还是我需要一种完全不同的方法?(我的猜测是否定的,因为在 java 中取消方法,并且处理将在不同的线程上运行,在 JS 中,everyhing 在单线程上运行)