承诺某些回调优先的回调队列
我的代码需要同时执行大量异步操作,并以特定的顺序方式处理它们的承诺。
我的意思是“特定的顺序方式” ==>假设您以该顺序启动promise promise1
,promise2
,promise3
,并且promise3首先解析,然后promise2然后是我想要的依次处理promise3
,promise2
和promise1
让我们考虑timeout
异步函数,该函数在X秒后超时,并且fetchMyItem1
,fetchMyItem2
返回诺言,当实现时,应根据timeout
是否已解析执行不同的代码。] >
[在具体情况下,假设有一个客户在柜台等待要交付的物品,或者该客户留下来,我们可以一次带一件物品直接在柜台为他服务,或者客户走了(timeout
),我们必须请服务员来,以便物品到达时,他/她可以将物品带给他。请注意,即使在交付一项商品时,其他项目也应该仍在交付中(承诺尚未兑现),并且在为客户提供一项商品或服务器到达时甚至可能到达(实现)。
这里有一些代码开头
const allItemsToBeDeliveredPromises = [fetchMyItem1(), fetchMyItem2(), ...] const customerLeavesCounterPromise = timeout() const waiter = undefined const allPromisesToBeFulfilled = [...allItemsToBeDeliveredPromises, customerLeavesCounterPromise] // LOOP const itemDeliveredOrVisitorLeft = await Promise.all(allPromisesToBeFulfilled) if hasCustomerLeft(itemDeliveredOrCustomerLeft) { // hasCustomerLeft allows us to detect if the promise that resolved first is `customerLeavesCounterPromise` or not waiter = await callWaiter() } else { // An item has arrived if (waiter) { deliverItemViaWaiter(itemDeliveredOrVisitorLeft) } else { deliverItemAtCounter(itemDeliveredOrVisitorLeft) } } // remove itemDeliveredOrCustomerLeft from allPromisesToBeFulfilled // END loop
我不确定如何为这种情况实现循环。承诺在解决时必须累积到队列中,但是队列中有特定承诺的优先级(超时承诺应在到达时尽快执行,但是如果已经实现了承诺,则在完成当前承诺的处理之后正在处理)
我的代码需要同时执行大量异步操作,并以特定的顺序方式处理它们的承诺。我的意思是“特定顺序方式” ==>假设您正在开始...
回答如下:我的代码需要同时执行大量异步操作,并以特定的顺序方式处理它们的承诺。