最近nodejs社群對於核心介面的寫法突然湧起一股討論, 應該是下面這篇文章起的頭 ;p
Callbacks are imperative, promises are functional: Node’s biggest missed opportunity
主要是提到promises的規範能夠更好的來處理非對稱的程式,Promises 這東西之 前只稍微看過,一來是目前好像存在不只一種的規範,另外我一直到目前也實在不很瞭解它真正的用法,不過有興趣的 Google 一 下應該也可以找到不少說明。不過概念類似根據執行的狀態(unfullfilled, resolved, rejected)然後執行對應的程式
- JavaScript 异步编程的 Promise 模式
- Promises/A
- Asynchronous Control Flow with Promises
- A tool for making and composing asynchronous promises in JavaScript
有興趣的話,可以看一下 spec 成員的講解
{' '}然後就出現幾篇不同觀點的文章
New post: Broken Promises{' '} bit.ly/Xzy72M
— drewcrawford (@drewcrawford){' '} April 1, 2013
nodejs 社群成員有出來提一下不同的看法,也就是為什麼目前是採用 callback 的方式。蠻有趣的是,原來之前 nodejs core 是包含 promise 的,不過後來被拔掉了)
Broken Promises http://t.co/Vdsk7XHeol
— Mikeal Rogers (@mikeal){' '} March 31, 2013
然後原作者又發了一篇新文,回應前面幾位作者的論點,另外也特別舉例子說明其實 Promise 也是可以很簡潔的。
Callbacks, promises and simplicity
因為對 promise 不夠了解,所以也不好多說些什麼,不過目前我也認同@mikeal 所說的,callback 的簡單明瞭是 nodejs module 可以蓬勃的原因之一,概念上也比較容易了解(至少對我而已是這樣沒錯啦),不過如果 promise 真的對於開發能帶來更好的結果的話,相信開發者也會逐漸轉換的吧(這算是開源世界的好處嘛(炸