Nadal nie jestem pewien, co powoduje przerwę, ale wygląda na to, że to jest winowajcą.
Podczas pauzy Cursor.nextObject
jest wzywany kilka razy przed pierwszym powrotem. Niektóre z tych wywołań zwracają null
. Rozwiązaniem jest upewnienie się, że Cursor.nextObject
nigdy nie jest wywoływana jednocześnie.
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));
}