问题标签 [es6-promise]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 将承诺链中的值传递给后续处理程序
考虑这段代码:
请注意,这两个sendMessage*()
函数都接受套接字作为参数。但只有第一个会得到这个,因为只有第一个会从openSocket()
.
我可以通过在外部范围中使用一个变量来解决这个问题,即一旦解决了套接字就分配它,然后在sendMessage2()
.
另外,我知道我可以使用一些库支持,就像这个关于 Q 的答案中描述的那样。
我正在寻找一种设计此代码的规范方法,其中:
- 不需要外部范围内的任何变量
- 不会依赖 3rd 方承诺库(应该基于 ES6 承诺)
有没有办法做到这一点?或者重构我的代码以使其更容易会更好吗?
javascript - Promise 与任意第三方模块
我仍然是 Promise 的新手(如Promises/A+中,而不是 jQuery),并且想将我的一些旧客户端代码转换为返回 Promise 以便下游可以然后不必将回调传递给上游,特别是,与网络存储和 AJAX 有任何关系。
问题是,我正在使用的 AJAX 库(双簧管.then
),它有一个 jQuery 风格的 API,但没有方法,这意味着我需要自己构造和返回new Promise
,但是下面的方法是最优的吗?我们可以使用静态而不包装函数来做一些事情Promise.resolve
吗Promise.reject
?我的例子如下:
旧代码
新代码
更好的代码?
(我打算单独使用本机 Promise 和 polyfill 来做到这一点,但如果有库对此有帮助,我很高兴看看它们的实现。)
javascript - 如何调试 javascript 承诺?
我试图了解如何调试基于承诺的异步代码。承诺是指基于 ECMAScript 6 的承诺,而调试是指使用内置的 chrome 或 firefox 调试器。
我遇到的问题是,当发生错误时,无论我如何“拒绝”它,我似乎都无法获得堆栈跟踪。
我试过这些:
但是这些都没有返回代码中的实际错误或堆栈跟踪。
所以我的问题是 - 如何正确调试 javascript Promises?
javascript - 解决函数范围之外的 Javascript Promise
我一直在使用 ES6 Promise。
通常,Promise 是这样构造和使用的
但是为了灵活性,我一直在做类似下面的事情来解决问题。
然后
这工作正常,但有没有更简单的方法来做到这一点?如果没有,这是一个好习惯吗?
javascript - 为什么 console.error 是一个方法而不是一个函数?
这些天我大量使用ES6 Promises 。onRejected
因此,如果您不指定函数,很容易忘记异常:
如果我可以添加一些字节catch()
来确保异常进入控制台,那就太好了:
不幸的是,这不起作用,因为console.error
它是一种方法而不是函数。也就是说,您需要console
在调用时指定接收方console.error()
。您可以在浏览器控制台中轻松验证这一点:
这意味着添加我的catch()
处理程序有点冗长:
诚然,它在 ES6 中要好一些:
但是最好避免额外的打字。更糟糕的是,如果您catch(console.error)
今天使用,您的异常会被默默地忽略,这正是您要解决的问题!console.error()
它需要成为一种方法,是否有任何基本的工作原理?
javascript - 解决所有 javascript ES6 Promise 后如何运行
我正在替换一些使用 jQuery Deferred 对象的旧代码,并且正在使用 Bluebird/ES6 Promises 重写。
如果我有多个异步调用,在解决所有承诺后如何触发一个函数。
使用 jQuery Deferreds 会是这样的:
如何使用 ES6 Promise 语法重写它?
javascript - Javascript ES6 会承诺支持'done' api吗?
例如
在大多数 promise polyfill 库中,done 会抛出错误,并且当前执行将退出。
但是如果我们使用p.then()
,什么都不会发生。错误被承诺吞没了。如果我们使用p.catch
,我们将无法退出当前执行。我想实现类似:
promise - 用原生承诺实现承诺队列?
我向您推荐@kriskowal的优秀文章“反应性一般理论”。在其中,他使用 Q 约定给出了承诺队列的以下实现:
您会看到它正在使用 Q 功能,例如defer
和get
。我正试图围绕如何调整它以使用本地承诺,但我正在经历巨大的大脑冻结。(在处理这个问题的过程中,我还发现 Chrome 似乎提供了一种Promise.defer
方法,AFAIK 不在规范中。)
有人可以帮忙吗?
javascript - JavaScript Promise 不执行然后
我正在尝试在以下 JavaScript 代码中实现一个承诺,但是由于某种原因,process.then 函数实际上从未发生过。谁能明白为什么?我已经设置了新的 Promise 并在我使用控制台日志对其进行测试时执行它,但是它从不执行 .then 函数
谢谢