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

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

需求分析

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

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

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

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

代码




    
    Document


    
    

你可能感兴趣的:(数组,线程,队列,javascript)