ES6のPromiseでキューを書いてみた
こんにちは。鍋を食べました、きたけーです。
最近、JavaScript Promiseの本 を読んでいるのですが、ES6のPromiseでキューを実装してみたくなったのでメモ。
投げられたジョブをひとつひとつ実行(解決)していく、キュー。
var Queue = function () { var queue = Promise.resolve(true); var add = function (job) { queue = queue.then(job); }; this.add = add; }; var queue = new Queue(); queue.add(function () { var promise = new Promise(function (resolve) { setTimeout(function () { console.log('1'); resolve(); }, 100); }); return promise; }); queue.add(function () { var promise = new Promise(function (resolve) { setTimeout(function () { console.log('2'); resolve(); }, 200); }); return promise; }); queue.add(function () { var promise = new Promise(function (resolve) { setTimeout(function () { console.log('3'); resolve(); }, 300); }); return promise; });
アニメーションを順番に実行するときなどに有用そう(途中で例外が発生したり、rejectすると後ろに控えるpromiseがスルーされるので注意)。