Task.js は、非同期処理をスッキリ書ける(よく見かける)ライブラリである
(ε・◇・)з o O ( 非同期が隠し味になってない他の人が書いたスパゲッティーコードを見てると寿命が縮まるマン
(ε・◇・)з o O ( 今出せるベストなソリューションを提供するマン
これは「進捗どうでしょう?」アタックに対する防御シールドとして作成したスライドだけど、
発表する機会とかなさげなので、そろそろ放流
http://t.co/FX5y3T32Sl (ε・◇・)з o O ( Task.js マジ オススメ
— コラーゲンたっぷりさん (@uupaa) 2014, 2月 21
Task.js の Task.run() は 最新のChromeに試験実装されている DOM Promise の Promise.all()に比べて、2〜2.5倍速でタスクを処理する能力を持っています
— コラーゲンたっぷりさん (@uupaa) 2014, 2月 21
一連の Promise に対する Task.js のアドバンテージは、
1. デバッグしやすい(ダンプとれる、追える)
2. どこでも動作する
3. 高速に動作する
4. 短く書ける
5. 非プログラマーへの説明が簡単
です。
— コラーゲンたっぷりさん (@uupaa) 2014, 2月 21
Flow.js で設計ミスしたぶぶん(大きなバッファを食わせた時にメモリを無駄遣いする事がある)が Task.js では修正されています。
また、タスクの前後, 上下関係を DSL のようにわかりやすく記述できる Task.run を提供しています
— コラーゲンたっぷりさん (@uupaa) 2014, 2月 21
(つ◇⊂) こ…ここれで… 進捗これで お願いします ><
— コラーゲンたっぷりさん (@uupaa) 2014, 2月 21
Task.js は末尾最適化が無いjs環境でも動作するように、シリアライズタスクの最大数を1000に制限していますが、
Task.run("a > 0 > b") のように、あいだに sleep タスクを挟むことで、その制限はなくなります(回避できます)
— コラーゲンたっぷりさん (@uupaa) 2014, 2月 21
(ε・◇・)з o O ( Task.run("a > 0 > b") が何かというと…
a(); sleep(0); b();
(ε・◇・)з o O ( です
(ε・◇・)з o O ( "a > 0 > b" で、スタックトレースを切りつつタスクを直列に実行できます