javascript - 限制 JavaScript 中的 "in-flight"异步调用

标签 javascript q

我在 JavaScript 中进行了许多异步调用。我想确保任何时候只有一个异步调用正在进行。我怎样才能实现这个目标?

Q 库是否公开了与此相关的内容?

最佳答案

这取决于您是想保留所有调用还是放弃飞行途中调用的任何调用。

如果要保留所有调用,则不应直接进行 Ajax 调用,而应将它们放入队列中。然后,队列抽象将负责进行 Ajax 调用,使用锁变量来检查调用是否已经在进行中。当收到 Ajax 调用或超时时,它可以触发队列来检查任何待处理的调用,以便可以触发下一个调用。

如果你想放弃在飞行中调用的电话,一个简单的锁定机制就可以了。对于任何调用,只需检查锁是否为 true,如果不是,则触发请求并将锁设置为 true。如果锁为真,则不执行任何操作(丢弃它)。当收到调用或超时时清除锁定。

关于javascript - 限制 JavaScript 中的 "in-flight"异步调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31741491/

相关文章:

json - 在 Hot Towel Angular 数据上下文中使用 return $q.when

javascript - 链接 promise 而不使用 'then' 和 Q 库

javascript - 在contenteditable中,只有第一行过滤正则表达式,第二行过滤失败

javascript - 音频持续时间为 NaN

javascript - 从 js 文件所做的更改不会被渲染并且无法调试

javascript - 为什么 'this' 在使用 Promise 时在类方法内部未定义?

javascript - 使用 Q.deferred 捕获错误

javascript - 无法格式化默认 MySQL 日期时间

javascript - 在 Browserify 和 NPM 中需要根路径(在这两个地方都去掉 '../../../..')

TypeScript 和 void Q promises