为了账号安全,请及时绑定邮箱和手机立即绑定

如何用Promise实现一个任务队列

如何用Promise实现一个任务队列

森栏 2019-03-13 13:15:22
工作中遇到一个业务需求。实行一个任务队列,前一个任务执行完了以后再去执行下一个任务。我本想用promise实行一个异步串行的队列。但这次情况跟以往不一样。想了有一段时间想不出来了,求教大佬~业务场景抽象出来是:存在如下任务队列 T = [A,B]同时全局下面已经存在有一个监听函数 F = onStateChange(res => 'res是我想要判断的值')A和B都安上一个run方法(返回promise),该方法会执行一段触发State改变的逻辑,然后再根据res的值决定是resolve还是reject具象出来是:小程序连接蓝牙 需要给蓝牙设备发送好几条指令 根据上一条指令是否通过才能进行下一条指令。
查看完整描述

2 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

按你的意思是每个任务的状态全是会变成完成的是吗?

假设你的监听函数监听的是State这个变量,那么在每个任务结束是判断下这个变量的值来决定是否退出。


async function t(){

    const T=[A,B];

    for(let i=0;i<T.length;i++){

        await T[i].run();

        // 假设失败会改成`failed`

        if(State=="failed"){

            console.log("队列任务失败");

            break;

        }

    }

}


查看完整回答
反对 回复 2019-04-07
  • 2 回答
  • 0 关注
  • 433 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信