2017-08-14 16 views
0

我不是js開發者,也不知道q.js和Promises背後的歷史/關係。當我看到Mozilla開發者網絡文檔時,我認爲,原生javascript Promise實現可以或多或少地完成q.js的功能。 q.js是承諾的早期實施嗎?我今天需要嗎?什麼是q.js添加不在JavaScript Promise實現中?

現在,當我在使用q.js的一些(4-5歲)代碼工作時,我經常看到我的調用堆棧中充滿了對q.js的調用,當我添加代碼時我假設使用原生Promise實現。我想從項目中刪除q.js,但我對它在原生Promise實現中添加的值有深入的瞭解。僅僅是在沒有Promise實現的情況下支持瀏覽器?或者還有其他事情正在發生?

+0

本機Promise支持遲來了。許多「定製」承諾庫在此之前發佈。 – marekful

+0

在你正在使用的當前代碼上獲得更多背景信息會很有幫助。通常,像q這樣的庫有助於簡化xhr調用和promise的處理。我自己也是最近的js開發者,但是如果我正確地記得js原生承諾是有點新的,並且取決於之前的開發人員不一定是他們在首次發佈時採用的東西。爲了與各種瀏覽器版本兼容,我假設他們可能使用了現有的庫。爲了回答這個問題,我相信q只是提供了一個對原生承諾的抽象 –

+0

Promise是ES6的一個新功能,但在此之前有很多解決方案來處理「回調的地獄」或「厄運的金字塔」問題對於異步編程,q是最着名的一個。如果您可以保證您的代碼不會運行只支持比ES6更早的ES標準的任何容器(例如,瀏覽器,節點,js等),那麼您肯定會這樣做「移植」工作。 – tibetty

回答

0

我在q.js文檔中找到了這個選項來解決調用堆棧問題 - Q.longStackSupport = true;但經過更多測試後,我最終刪除了q.js,因爲原生Promise實現正在做我所需要的一切。

相關問題