2017-08-14 60 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实现正在做我所需要的一切。

相关问题