问题标签 [when-js]
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 - 用 then() 链式承诺
我正在对我的节点样式回调使用when承诺库并承诺它们......lift()
我想调用链中的函数,如下所示:
但是在调用第二个回调函数时它给了我一个错误:
未捕获的类型错误:未定义不是函数
callback
该错误是指twoFn(callback)
.
将这些功能链接在一起并一个接一个地执行的正确方法是什么?
javascript - 在解析之前返回的延迟对象
我正在使用带有 Node js 的 when 库。我创建了一个延迟对象,将解析放在封装的 Mongoose findOne() 函数中,然后在外面返回承诺。但似乎我的承诺总是在检索数据之前返回。
呼叫者
'returning promise'
之前的输出data
javascript - 控制 `.then()` 回调何时触发
我有一长串的承诺贯穿我的代码模块。我事先不知道我会完成多少个承诺,也没有从任何一个承诺到任何其他承诺的范围(这意味着我不能做 a Promise.join()
)。
我的问题是我then()
在这个链上的多个 Promise 上附加了回调。我怎样才能控制最后解雇哪一个?
更新:这是一个简化的示例:
我的问题是.then()
inaFn().then(anotherFn)
之前被调用过bFn().then(someFn)
。
以下是一些有助于说明我的问题的代码片段:
策略.js
},
store.js
// 只是一个包装同步 get 的代理函数 get: function (key, options) { return this.getItem.apply(this, arguments); },
商店-helpers.js
在应用程序的一个非常不同的部分,我也有:
我希望.then()
最后触发上述内容,但是.resolve
在触发store-helpers.js.then()
时,会调用最后一个回调。
javascript - 捕获 when.js 未处理的拒绝
我想捕获 when.js 未处理的拒绝,以便我可以记录它们。为了实现这一点,我重写了 console.warn(),但是它可以记录除 when.js 之外的我不感兴趣的东西。
参考:https ://github.com/cujojs/when/blob/master/docs/api.md#debugging-promises
我在 when.js https://github.com/AriaMinaei/pretty-monitor中使用prettymonitor
node.js - 在 Node.js 中处理未处理的拒绝
跟进问题。捕获 when.js 未处理的拒绝
Node.js process.on() 示例阻止显示正常的控制台/prettymonitor 输出。有没有办法保留这个。文档还显示: process.on('unhandledRejection', function(reason, key) not ..(promise,reason). ref: http://github.com/cujojs/when/blob/master/docs/debug- api.md
javascript - 有没有办法从 Jquery Deferred/Promise 到 When-JS Promise
我想在 jquery ajax 调用返回的承诺之外使用 When-JS 功能。有转换方案吗?
编辑 1
node.js - 使用 reqwest 以及何时进行远程调用
我正在使用 nodejs 模块 reqwest 并且何时进行远程调用并且返回的承诺是失败的。
当我使用邮递员提交相同的请求时,我得到了回复。
我不确定为什么承诺被拒绝。
这是我的代码。
谢谢
javascript - Node.js/Javascript - 嵌套的 promises 和 for 循环 with when.js
我目前正在努力处理承诺的控制流程(承诺新手!)。
我调用了返回一个数组对象的 Redis。然后,我遍历每个结果并回调 Redis 以获取一个值,并希望将这些填充到最终对象out
中。
out 对象永远不会被填充,我猜测 forEach 尚未完成:
(注意 Redis 客户端库默认返回基于 when.js 的承诺)
如何保证 forEach 循环是完整的?
我已经阅读了许多类似的帖子(我知道这是重复的)但是无法理解为什么内部的 done() 方法不包含完整的out
obj。
我猜我需要将 forEach 本身包装在一个承诺中?欣赏任何方向。
更新 1:非常感谢@David_Aurelio。我现在需要填充out
键和值。这是我的尝试:
内部 console.log 打印正确的键/值
最后完成的现在打印:
ajax - Jasmine AJAX 模拟将字符串转换为数组
我正在尝试围绕我的 AjaxRequest 类编写一个测试套件,但是当我尝试检查请求正文时,我得到了这个测试失败
这是单元测试的相关位:
这run()
是发出ajax请求的方法
我正在使用reqwest发出 ajax 请求。
有人可以指出为什么在 json 正文中['text']
发送请求时会期待它吗?'text'
谢谢!
javascript - `when(foo, f)` 和 `when(foo).then(f)` 有什么区别
我正在查看一些使用when.js
. 出现几次的模式是:
我想他们when
在这里使用的原因是他们当时不确定是否someBigFunction()
会返回承诺。
在语义上,上述内容和:
通常,示例不使用 promise 的返回值(也就是说,它function() {
不是function(x) {
)。
API 文档提供了这个:
when(x,f)
:通过将 x 转换为 f 来获得可信的 Promisethen
:通过将函数应用于承诺的履行价值来转换承诺的价值。
所以我怀疑没有区别,但也许我错过了一个微妙之处?