私は非同期ライブラリを使用して、キューオブジェクトを使用するWebワーカーで非同期要求を管理します。 しかし、私は、キューがそれが言うのマニュアルをアイドル状態のoposingに入らないコマンドを殺すオブジェクトを実行します。非同期キューがkillでアイドルにならない
キル:ドレインコールバックを削除し、それを強制的にキューから残り タスクを空にする機能をアイドルになる。 queue.kill()で呼び出します。
1つのタスクでエラーが発生した場合は、キューを停止してWebワーカーを強制終了します。しかし、私は、ワーカーのマネージャーにこのワーカーを殺すよう伝えるメッセージを呼び出すと、その殺害は完了していないことがわかりました。代わりに、それは無駄にアイドルだと私に伝えます。
私は次のコードを使用し
var q = async.queue(function(task, callback) {
FileReader.readBlock(task.file, task.offset, task.blockSize)
.then(function(block) {
return sendBlock(task.uuid, block, task.blockNumber);
})
.then(function(result) {
callback(null, result);
}).catch(function(error) {
callback(error);
});
}, 8);
q.drain = function() {
console.log('All Tasks finished successfully.');
};
q.error = function(error, task) {
this.kill();
while(true) {
if(this.idle()) {
self.postMessage({
type: 'error',
msg: 'A task failed. Upload is killed.'
});
break;
}
}
};
は、非同期のバグかは私の一部に誤りがあることですか?