32
JAVASCRIPT CONTROL FLOW by bu @ hax4 studio 2013. Feb. 06

Node.js Party No 26 簡報

  • Upload
    -

  • View
    482

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Node.js Party No 26 簡報

JAVASCRIPT CONTROL FLOW

by bu @ hax4 studio2013. Feb. 06

Page 2: Node.js Party No 26 簡報

‧A Developer of hahahaha studio

‧Web developer since 2003

‧PHP, JavaScript, Python, Java Developer.

‧我討厭 IE (真的)

邱柏崴Buwei Chiu (a.k.a bu)

Page 3: Node.js Party No 26 簡報

WHAT IS HAHAHAHA STUDIO?

一個成立於 2009 年西洋情人節的設計團體

專注於網路服務的開發或研究

近年開始採用多樣化的平台進行製作

最重要的,我們都討厭 IE

http://hax4.in

Page 4: Node.js Party No 26 簡報

重點回顧

Page 5: Node.js Party No 26 簡報

Node.js

Page 6: Node.js Party No 26 簡報

JavaScript

Page 7: Node.js Party No 26 簡報

asynchronous

callback

means

Page 8: Node.js Party No 26 簡報

asynchronous

Page 9: Node.js Party No 26 簡報
Page 10: Node.js Party No 26 簡報
Page 11: Node.js Party No 26 簡報

有什麼問題?

Page 12: Node.js Party No 26 簡報

可怕! 超多層的 callback

Page 13: Node.js Party No 26 簡報
Page 14: Node.js Party No 26 簡報
Page 15: Node.js Party No 26 簡報

為什麼我們需要 Control Flow 的機制?

Page 16: Node.js Party No 26 簡報
Page 17: Node.js Party No 26 簡報
Page 18: Node.js Party No 26 簡報

很大的變化對吧?

Page 19: Node.js Party No 26 簡報

目的有二個:

1. 減少程式碼的複雜度

2. 使其更容易被閱讀及理解

Page 20: Node.js Party No 26 簡報

本次要介紹的二個主角

Page 21: Node.js Party No 26 簡報

caolan/asynckriskowal/q

Page 22: Node.js Party No 26 簡報

情境1:Chained function call, data passing to next

Page 23: Node.js Party No 26 簡報

live demoQ.js with promise/a

Page 24: Node.js Party No 26 簡報

promise/a

reject

resolve

fulillment failbackthen ( , );promiseregister

promise

returns

a proposal of CommonJS

when

Page 25: Node.js Party No 26 簡報

Live demoasync.js waterfall

Page 26: Node.js Party No 26 簡報

其他 Case

Page 27: Node.js Party No 26 簡報

async.js cargo

use case: 有⼀一些事件需要被收集批次處理

Page 28: Node.js Party No 26 簡報

async.js queue

有⼀一些事件需要⾺馬上處理,但⼜又想利⽤用不同的 loop 進⾏行處理上的分⼯工,加強處理速度

Page 29: Node.js Party No 26 簡報

async.js parallel

use case: ⾮非同步⽅方法但要結束觸發callback

Page 30: Node.js Party No 26 簡報

async.js seriesuse case: 需要⼀一個⼀一個接著⼀一個序利執⾏行的⽅方法,

然後結束時要觸發 callback

Page 32: Node.js Party No 26 簡報

謝謝