Jag är fortfarande inte säker på vad som orsakar pausen, men det verkar vara den som är boven.
Under pausen, Cursor.nextObject
blir uppringd flera gånger innan den första kommer tillbaka. Vissa av dessa samtal returnerar null
. Lösningen är att se till att Cursor.nextObject
kallas aldrig samtidigt.
if (this.cursor && !this.cursor_exec && this.length() < this.concurrency) {
this.cursor_exec = true;
this.cursor.nextObject(function(err, item) {
console.log(this.name + ': ' + (item ? item._id : null) + ' ' + (err ? err : null));
this.cursor_exec = false;
if (item) {
this.push(item);
} else {
delete this.cursor;
}
}.bind(this));
}