作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有许多异步 AJAX 调用,其结果将得到处理。处理发生的顺序无关紧要,但结果需要一次处理一个。所以我想简单地执行我的 AJAX 调用,它们都只是将结果放在一个队列中。然后应该在单个线程上处理该队列。这样,结果会尽快得到处理。
执行此操作的最佳方法是什么?我正在使用 jQuery,很高兴利用它为此提供的任何功能。
最佳答案
异步并不意味着“多线程”。考虑在处理第一个点击处理程序之前连续触发许多点击事件。一次只能处理一个 Action ,其他 Action 等待执行。
像 Javascript 这样的事件驱动语言是在队列的基础上运行的。后台的 Javascript 本质上有一个巨大的队列,事件和异步响应被插入其中。完成特定的处理后,将处理队列中的下一项。
这些队列有时被称为“Runloops”。 Javascript 将进入无限循环,从队列中检索事件、处理它,然后返回队列以进行另一项工作。
多线程可以在(较新的)Javascript 版本中使用 Web Workers 实现,但这些都是明确选择加入的。如果您有兴趣,请查找它们。
然后要回答您的问题,只需将回调附加到您的异步请求,即使中途返回另一个响应,它也会完成处理。另一个响应将“等待”,直到处理完当前事件。
关于javascript - Javascript 或 jQuery 中的线程安全队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711423/
我是一名优秀的程序员,十分优秀!