forを使わないループ、簡単な例はみんな思いつくからいいとして、一番ややこしいやつ考えてたんだけど、やっぱり無駄にPromise酷使する例だと思った。
# Serialized Sync Promise [1..100] .map (i) -> new Promise (d) -> console.log i; d() .reduce ((l, p) -> l.then p), Promise.resolve()
(function() { _results = []; for (_i = 1; _i <= 100; _i++){ _results.push(_i); } return _results; }).apply(this).map(function(i) { return new Promise(function(d) { console.log(i); return d(); }); }).reduce((function(l, p) { return l.then(p); }), Promise.resolve());
ちゃんと同期実行される。
ちなみに自分はこのコードはd() を呼ぶタイミングで時系列制御が自由自在なので、プロダクションでもよく書く。