Ich bin immer noch nicht sicher, was die Pause verursacht, aber es scheint, dass das der Übeltäter ist.
Während der Pause Cursor.nextObject
wird mehrmals angerufen, bevor die ersten zurückkommen. Einige dieser Aufrufe geben null
zurück . Die Lösung besteht darin, sicherzustellen, dass Cursor.nextObject
wird nie gleichzeitig aufgerufen.
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));
}