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

Node.js Party No 26 簡報

May 09, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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 簡報

謝謝