sindresorhus / p-queue

Promise queue with concurrency control
MIT License
3.39k stars 182 forks source link

internal `pending` count out of sync #203

Open ZhangHanwen96 opened 8 months ago

ZhangHanwen96 commented 8 months ago

Lets say I have a queue for 10 tasks, I want to set it to pending if q.concurrency <= q.pending, before q.add(someTask),

But due to the internal implemetation of 'add()' method, the intertal pending++ got executed in the end of current eventloop, so when I do

items.forEach(item => {
   if(q.concurrency <= q.pending) {
            // set item pending
   } else { 
           // set item loading
   }
})

the current q.pending is not what I expected

Helps appreciated!