问题标签 [rsvp-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 - 如何在解决 Promise 时运行 qunit 断言
我正在为返回承诺的函数编写测试,并且无法在解决或拒绝承诺时运行断言。我不能在这个项目上使用 ES6,所以我使用的是 rsvp.js 库,它声称实现了 Promises/A+ 规范。我正在使用最新的 qunit 版本 1.17.1
被测函数:
成功测试:
这失败了“预期 1 个断言,但运行了 0 个”
失败测试:
这失败了“加载空组时在获得承诺期间拒绝承诺:未加载任何组”
javascript - 如何将嵌套的 setTimeouts 转换为 Promise
使用 rsvp.js 或任何其他 Promise/A+ 实现,我如何将代码转换为...
进入承诺实施?
jquery - 从异步调用返回响应在 Emberjs Helper 中不起作用
我正在尝试将来自 ajax 调用的响应返回给 Ember js 助手。在 Helper 中使用Promise的Asynchoronous
调用正在返回。[object Object]
console.log(data.thumbnail_url);
正在工作,但回调没有返回 ( <img...>
) 响应。这是JsFiddle。
这是 HandleBars 模板:
javascript - Uncaught ReferenceError: RSVP is not defined , 使用 require.js 和 rsvp 时出错
我正在做一个演示,展示使用rsvp.js的 Promise 中的错误处理。一切似乎都很好,直到我在标签中使用了 rsvp.js 的 CDN url。现在,由于我的应用程序中有用于模块加载的 require.js,因此我尝试通过 require js 语法加载 rsvp.js 模块。在 Chrome 网络选项卡中,我看到 rsvp.js 模块也被正确加载,但我在控制台中收到以下错误,
未捕获的 ReferenceError:未定义 RSVP。
javascript - 外部拒绝 Ember 中的未决承诺
概括:
我们在使用 Ember 应用程序时遇到了以下情况,并且正在努力寻找合适的解决方案。
我们正在处理大量数据,因此我们对数据的一些请求相当慢。
最初,我们使用 Em.RSVP.hash 将我们的请求“捆绑”在每个路由的模型挂钩中。然而,这会锁定 UI,最终是不可接受的。
我们的解决方案是在 setupController 钩子中级联请求,如下所示:
这行得通。我们获得即时页面加载,并且可以首先显示最相关的数据。
我们试图让 Ember 保持最新(在撰写本文时为 1.11.3)。我们没有使用 Ember 数据。
问题:
问题是用户界面已解锁。例如,用户可以注销(并被重定向到登录页面)。请求持续存在并最终完成,弄乱了我们在登录和注销时设置的 csrf 令牌。下次用户尝试登录时,他们会收到 422 错误。
一个更简单的场景是在长时间运行的请求完成之前更改过滤器设置。新请求(通常通过过滤器更改缩小范围)在初始请求之前完成。然后数据被最终完成的原始请求覆盖。
我们的直接解决方案是尝试杀死未决的承诺,但找不到“现代”的方式来做到这一点。
这有效:
上面的内容有点难看和简化,以了解重点。
Ember Docs 声明“新代码应该使用 RSVP.Promise 构造函数而不是(延迟)”。但是,似乎没有办法使用新方法来做到这一点。
问题:
有没有一种现代的方式来取消未决的承诺/请求?
有没有更好的方法来拆分我们的页面加载以启用一种干净的方式来取消挂起的请求?
更新
我最终使用了延迟。它并不漂亮,但在我们重构 UI 并重新考虑对慢查询的需求之前,它会起作用。
谢谢你。
javascript - Ember RSVP.Promise 解析函数返回未定义
我的适配器“findQuery”中有函数需要从服务器获取数据并返回它。
功能:
因此,当我调试函数时,我看到该函数使用正确的数据进入解析(API 将所有请求的数据作为对象数组返回)。然后我得到日志错误:
错误:断言失败:来自 findQuery 的响应必须是数组,而不是未定义的
更新
问题已解决,但我仍然不明白为什么会发生。
发生什么事?
我在 store-injector 文件中设置
这为我解决了看起来像这样的 api 端点:
虽然在某种程度上它有一些冲突,但我尝试使用上述函数解析一个 url,如下所示:
它解决了,但我找不到它发生的原因,这是有道理的,但我仍然希望有人能解释它发生的原因。
javascript - 即使我在所有 then-ables 中都使用了拒绝回调,我是否总是需要 catch() ?
我将捕获放在最后,但它们至少在一个特定实例中返回空对象。对于任何不为人知的事情是否需要捕获,或者只是把我搞砸了?
这是错的吗?或者它是否有某种用途,即使我仍然对.then(resolve, reject)
所有父链 then-ables 中的所有方法使用使用错误/拒绝处理程序?
编辑:更好的代码示例,我希望。我想我可能仍然在命名中使用某种反模式,我rejectMessage
在我的例子中,它是 jqXhr 对象,对吧?
所以也许我应该准确地命名它们或什么?即jqXhr
?顺便说一句,我喜欢在每个内部当场拒绝它的原因then()
,如果有错误,是因为这样我可以大量记录每个单独的呼叫,如果那里特别有问题,那我就没有追踪任何东西。微博,因为我可以。
Promise 正在帮助以这种方式打开调试的世界。
这是我尝试过的三个示例。我更喜欢方法 1 和方法 2,我绝不会回到方法 3,这是我在应许之地开始的地方。
我也在某个地方运行它onready
作为另一个备份。
编辑错误示例
ember.js - Ember:如何从嵌套模型中获取计算属性?
首先:我不知道如何在 Ember.js 中使用 Promise。我想调用我的控制器的一个属性,该属性取决于也是嵌套的异步模型数据。
此外,我的模型看起来像这样:
所以我创造了这样的东西:
有两个问题(就像评论中已经提到的那样):
- 如何加载嵌套的 hasMany 异步模型,如所有实践中的所有 alpha。
- 如何将完整结果作为 RSVP.hash-Method 中的属性返回以在模板或其他内容中使用
有谁能够帮助我?
编辑 06/20/2015
正如@Kingpin2k 建议的那样,我添加了一个要点以更好地理解我的问题: https ://gist.github.com/MarcManhart/e5c1d91e8fdfd876de37
javascript - 调试并行运行的 Promise 的最佳方法
我正在使用 nodejs+express 开发应用程序的后端,并使用 RSVP 进行承诺。
问题:只要其中一个功能出现意外错误或异常,执行就会卡住。有什么办法可以找到哪个功能有错误。
代码如下所示:
谢谢你。