promise的弊端
promise徹底解決了callback hell,但也存在以下一些問題
-
延時問題(涉及到evnet loop)(http://www.ruanyifeng.com/blog/2014/10/event-loop.html))
-
promise一旦創建,無法取消
-
pending狀態的時候,無法得知進展到哪一步(比如接口超時,可以借助race方法)
-
promise會吞掉內部拋出的錯誤,不會反映到外部。如果最后一個then方法里出現錯誤,無法發現。(可以采取hack形式,在promise構造函數中判斷onRejectedCb的數組長度,如果為0,就是沒有注冊回調,這個時候就拋出錯誤,某些庫實現done方法,它不會返回一個promise對象,且在done()中未經處理的異常不會被promise實例所捕獲)
-
then方法每次調用都會創建一個新的promise對象,一定程度上造成了內存的浪費