25 lines
750 B
JavaScript
25 lines
750 B
JavaScript
|
'use strict'
|
||
|
|
||
|
/**
|
||
|
* Invokes all requests in the queue by passing them to the supplied callback
|
||
|
* function and then clears all items from the queue.
|
||
|
*
|
||
|
* @param {function} cb A function used to handle the requests.
|
||
|
*/
|
||
|
module.exports = function flush (cb) {
|
||
|
if (this._timer) {
|
||
|
clearTimeout(this._timer)
|
||
|
this._timer = null
|
||
|
}
|
||
|
|
||
|
// We must get a local copy of the queue and clear it before iterating it.
|
||
|
// The client will invoke this flush function _many_ times. If we try to
|
||
|
// iterate it without a local copy and clearing first then we will overflow
|
||
|
// the stack.
|
||
|
const requests = Array.from(this._queue.values())
|
||
|
this._queue.clear()
|
||
|
for (const req of requests) {
|
||
|
cb(req.message, req.expect, req.emitter, req.cb)
|
||
|
}
|
||
|
}
|