繁体   English   中英

通过多个异步调用管理队列

[英]Managing a Queue with Multiple, Asynchronous Calls

我正在用JavaScript编写队列,该队列将由多个“服务器”异步处理。 我担心两个服务器可能会从队列中检索相同的项目。 它现在似乎没有发生,但我不想让它碰碰运气。 据我所知,JavaScript是单线程的。 这是否允许这样的假设,即即使同时有多个请求,JavaScript也会使用它自己的队列来执行该功能?

function getJob() {
  if(jobs.length > 0) {
      var job = jobs.shift();
      $('#jobStatsQueueCount').text(jobs.length);
      return job;
  } else {
      return null;
  }
}

这是完整的代码:

http://jsfiddle.net/L7yaB/5/

JavaScript是单线程的; 是否允许这样的假设:即使同时有多个请求

“同时”在计算机领域不存在。 总有一些命令。

如果您单击两次,则会得到两个onclick事件,一个接一个。 即使您单击时浏览器很忙,它们仍然会一个接一个地发生,并且以您触发它们的相同顺序进行。 这是您可以假设的:事件永远不会相互竞争,超越或交错。

因为没有事件交织,所以即使shift不是原子的(也可能不是,但也没有关系),您将永远不会面临像您建议的那种常见线程错误的风险。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM