From 5b7c5eebf41c9e1e1fe8e9e1d4a6ad06e93e7430 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 27 Sep 2018 08:59:21 +0200 Subject: [PATCH] Use a update wire wrapper instead --- lib/torrent.js | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/torrent.js b/lib/torrent.js index 4ceca0657c..8f667ffe9c 100644 --- a/lib/torrent.js +++ b/lib/torrent.js @@ -1138,7 +1138,17 @@ class Torrent extends EventEmitter { const ite = randomIterate(this.wires) let wire while ((wire = ite())) { - this._updateWire(wire) + this._updateWireWrapper(wire) + } + } + + _updateWireWrapper (wire) { + const self = this + + if (typeof window !== 'undefined' && typeof window.requestIdleCallback === 'function') { + window.requestIdleCallback(function () { self._updateWire(wire) }) + } else { + self._updateWire(wire) } } @@ -1156,11 +1166,7 @@ class Torrent extends EventEmitter { if (wire.requests.length >= minOutstandingRequests) return const maxOutstandingRequests = getBlockPipelineLength(wire, PIPELINE_MAX_DURATION) - if (typeof window !== 'undefined' && typeof window.requestIdleCallback === 'function') { - window.requestIdleCallback(function () { trySelectWire(false) || trySelectWire(true) }) - } else { - trySelectWire(false) || trySelectWire(true) - } + trySelectWire(false) || trySelectWire(true) function genPieceFilterFunc (start, end, tried, rank) { return i => i >= start && i <= end && !(i in tried) && wire.peerPieces.get(i) && (!rank || rank(i))