资讯专栏INFORMATION COLUMN

js 利用数组队列模拟多线程操作

yimo / 1371人阅读

摘要:不知道下面的想法对不对,如有错误还请大佬斧正需求分析有一批设备,数量很多,需要为他们开启远程驱动即调用后台的远程驱动接口问题是后台处理远程驱动只能一台一台设备处理,如果设备数量很多,后台在内处理不完就会最开始的办法,将所以设备统统交给后台,

不知道下面的想法对不对,如有错误还请大佬斧正 需求分析

有一批设备,数量很多,需要为他们开启远程驱动(即调用后台的远程驱动接口),问题是后台处理远程驱动只能一台一台设备处理,如果设备数量很多,后台php 在30s 内处理不完就会 timeout

最开始的办法,将所以设备统统交给后台,接口只请求一次,这样做的结果是,这个请求常常超时(不可用)
因为后台无法一次处理这么多数据,所以请求超时

第二种想法:将所有设备分组,比如 3个一组,然后循环分组好的列表数组,在循环内部用闭包进行访问请求
这样做的结果是会有很多个ajax请求在同时进行,也无法得到所有请求结束的时刻的钩子

第三种想法(我们老大的想法):模拟线程操作,模拟同时开启多个线程,所有请求即设备列表放在一个线程池内(数组),每个线程的工作,只有当本次工作完成后,才可以继续去线程池内去拿新任务(即发送新情求),这样就可以控制同时请求的个数(线程数)以及请求结束的时刻的钩子。

代码



    
    Document


    
    

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84299.html

相关文章

  • javascript:线程与伪线程

    摘要:伪线程重点浏览器的内核是多线程的,一个浏览器一般至少实现三个常驻线程引擎线程,渲染线程,浏览器事件触发线程。当我们要循环过百万级的数据甚至亿的时候怎么办那就用模拟一个多线程。 web worker 这里就不多说了,主要说伪线程。因为web worker不能操作dom元素,很多时候用不上。 伪线程 重点:浏览器的内核是多线程的,一个浏览器一般至少实现三个常驻线程:javascript引擎...

    genefy 评论0 收藏0
  • 夯实基础-JavaScript异步编程

    摘要:调用栈被清空,消息队列中并无任务,线程停止,事件循环结束。不确定的时间点请求返回,将设定好的回调函数放入消息队列。调用栈执行完毕执行消息队列任务。请求并发回调函数执行顺序无法确定。 异步编程 JavaScript中异步编程问题可以说是基础中的重点,也是比较难理解的地方。首先要弄懂的是什么叫异步? 我们的代码在执行的时候是从上到下按顺序执行,一段代码执行了之后才会执行下一段代码,这种方式...

    shadowbook 评论0 收藏0
  • 浏览器渲染机制

    摘要:浏览器渲染进程浏览器内核进程,内部是多线程的默认每个页面一个进程,互不影响。事件触发线程归属于浏览器而不是引擎,用来控制事件循环可以理解成引擎自己都忙不过来,需要浏览器另开线程协助。 线程和进程 进程和线程的概念可以这样理解: 进程是一个工厂,工厂有它的独立资源--工厂之间相互独立--线程是工厂中的工人,多个工人协作完成任务--工厂内有一个或多个工人--工人之间共享空间 工厂有多个工人...

    appetizerio 评论0 收藏0
  • 浏览器渲染机制

    摘要:浏览器渲染进程浏览器内核进程,内部是多线程的默认每个页面一个进程,互不影响。事件触发线程归属于浏览器而不是引擎,用来控制事件循环可以理解成引擎自己都忙不过来,需要浏览器另开线程协助。 线程和进程 进程和线程的概念可以这样理解: 进程是一个工厂,工厂有它的独立资源--工厂之间相互独立--线程是工厂中的工人,多个工人协作完成任务--工厂内有一个或多个工人--工人之间共享空间 工厂有多个工人...

    lncwwn 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<