Saya masih tidak yakin apa yang menyebabkan jeda, tetapi tampaknya itulah pelakunya.
Selama jeda, Cursor.nextObject
dipanggil beberapa kali sebelum pengembalian pertama. Beberapa panggilan ini mengembalikan null
. Solusinya pastikan Cursor.nextObject
tidak pernah dipanggil secara bersamaan.
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));
}