Tôi vẫn không chắc điều gì gây ra việc tạm dừng, nhưng có vẻ như đó là thủ phạm.
Trong khi tạm dừng, Cursor.nextObject
được gọi nhiều lần trước khi trả về đầu tiên. Một số cuộc gọi này đang trả về null
. Giải pháp là đảm bảo Cursor.nextObject
không bao giờ được gọi đồng thời.
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));
}