こんにちは。
本日はasync.queueを使ったキューのサンプルの紹介です。
概要
asyncのインストールが必要です。
以下のコマンドでインストールしてください。
npm install async
サンプルコード
pushを使用
pushを使用すると末尾に新しいデータを追加していきます。
const async = require('async'); const q = async.queue((data, callback) => { console.log(`data = ${data}, lenght = ${q.length()}, running = ${q.running()}`); setTimeout(() => { callback(null); }, 1000); }); for (let i = 0; i < 10; i++) { q.push(i); }
結果は以下です。
data = 0, lenght = 9, running = 1 data = 1, lenght = 8, running = 1 data = 2, lenght = 7, running = 1 data = 3, lenght = 6, running = 1 data = 4, lenght = 5, running = 1 data = 5, lenght = 4, running = 1 data = 6, lenght = 3, running = 1 data = 7, lenght = 2, running = 1 data = 8, lenght = 1, running = 1 data = 9, lenght = 0, running = 1
unshiftを使用
unshiftを使用すると最初にデータを追加していきます。
const async = require('async'); const q = async.queue((data, callback) => { console.log(`data = ${data}, lenght = ${q.length()}, running = ${q.running()}`); setTimeout(() => { callback(null); }, 1000); }); for (let i = 0; i < 10; i++) { q.unshift(i); }
結果は以下です。
data = 9, lenght = 9, running = 1 data = 8, lenght = 8, running = 1 data = 7, lenght = 7, running = 1 data = 6, lenght = 6, running = 1 data = 5, lenght = 5, running = 1 data = 4, lenght = 4, running = 1 data = 3, lenght = 3, running = 1 data = 2, lenght = 2, running = 1 data = 1, lenght = 1, running = 1 data = 0, lenght = 0, running = 1
pushを使用したときと逆になっているのがわかりますね。
待機と再開(pause, resume)
pauseとresumeを使って、一定時間待機してから実行開始します。
const async = require('async'); const q = async.queue((data, callback) => { console.log(`data = ${data}, lenght = ${q.length()}, running = ${q.running()}`); setTimeout(() => { callback(null); }, 1000); }); q.pause(); console.log('待機中・・・'); for (let i = 0; i < 10; i++) { q.push(i); } setTimeout(() => { console.log('実行開始!'); q.resume(); }, 3000);
結果は以下です。
待機中・・・ 実行開始! data = 0, lenght = 9, running = 1 data = 1, lenght = 8, running = 1 data = 2, lenght = 7, running = 1 data = 3, lenght = 6, running = 1 data = 4, lenght = 5, running = 1 data = 5, lenght = 4, running = 1 data = 6, lenght = 3, running = 1 data = 7, lenght = 2, running = 1 data = 8, lenght = 1, running = 1 data = 9, lenght = 0, running = 1
以上です。