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

工作中遇到一个业务需求。
实行一个任务队列,前一个任务执行完了以后再去执行下一个任务。我本想用promise实行一个异步串行的队列。但这次情况跟以往不一样。想了有一段时间想不出来了,求教大佬~

业务场景抽象出来是:
存在如下任务队列 T = [A,B]
同时全局下面已经存在有一个监听函数 F = onStateChange(res => 'res是我想要判断的值')
A和B都安上一个run方法(返回promise),该方法会执行一段触发State改变的逻辑,然后再根据res的值决定是resolve还是reject

具象出来是:
小程序连接蓝牙 需要给蓝牙设备发送好几条指令 根据上一条指令是否通过才能进行下一条指令。


森栏
浏览 434回答 2
2回答

慕森王

按你的意思是每个任务的状态全是会变成完成的是吗?假设你的监听函数监听的是State这个变量,那么在每个任务结束是判断下这个变量的值来决定是否退出。async function t(){&nbsp; &nbsp; const T=[A,B];&nbsp; &nbsp; for(let i=0;i<T.length;i++){&nbsp; &nbsp; &nbsp; &nbsp; await T[i].run();&nbsp; &nbsp; &nbsp; &nbsp; // 假设失败会改成`failed`&nbsp; &nbsp; &nbsp; &nbsp; if(State=="failed"){&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; console.log("队列任务失败");&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript