问题标签 [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.

0 投票
2 回答
2359 浏览

node.js - 如何存根 Promise 以便我的测试可以同步运行?

我正在尝试通过存根模块的依赖项来对模块进行单元测试,在这种情况下UserManager

该模块的简化版本如下:

我正在对 UserManager 的saveCode函数进行存根,该函数返回一个Promise这样的函数,它返回一个已解决的 Promise,但是当我被调用时,唉,在断言assert时还没有被调用。res.redirectres.redirect

单元测试的简化版本是:

如何正确地存根承诺,以便被测方法同步运行?

0 投票
1 回答
433 浏览

ember.js - 使用 Ember.PromiseProxyMixin 时如何冒泡被拒绝的承诺

我将 Ember 的 PromiseProxyMixin 与 AJAX 数据调用和 Ember RSVP Promises 一起使用。我不想在每个路由/模板中加入错误处理,而是将一个被拒绝的承诺冒泡到 Application 路由中的错误处理程序,如下所示:

目前,如果一个 Promise 被拒绝,被拒绝的 Promise 不会冒泡到 Application 路由(这是因为 PromiseProxyMixin 附加到一个 Promise 的 .fail() 函数并防止进一步冒泡吗?如果是这样,有没有办法继续冒泡?)

是否可以使用 PromiseProxyMixin 并允许被拒绝的承诺冒泡到 Application 路由?

0 投票
2 回答
91 浏览

ember.js - Emberjs 和承诺

我的编码风格可能很糟糕,因为我还在学习。我需要知道如何处理将额外参数传递给 Emberjs 中的链式承诺。

我想要达到的目标。我的路线中的许多承诺看起来很混乱,所以我决定为每个承诺编写函数

我的同一条路线的动作哈希包含

当我调用函数时self._saveCity(),它返回一个好的承诺,然后将解析后的值传递给函数,this._getBikeRiders_getBikeRiders(value)函数有一个参数值,该参数值是从先前的承诺中收集的,在这种情况下保存城市,所以我们有城市名称。

现在,如果在_getBikeRiders(value) 函数中我需要对其他值做一些事情,我不能将任何东西传递给它。

示例 self._getBikeRiders(value,"some paramer)没有通过两者。

我失去了函数内部的上下文,_getBikeRiders: function()所以我无法访问它(我得到全局窗口)。

我不知道如何在这里实现这个 Ember.RSVP.Promise 可以接受上下文参数

0 投票
1 回答
1387 浏览

javascript - 在同一条路由上管理 Ember 多个 RSVP 承诺

我正在使用 GitHub API 以在特定路径中加载模型

我正在为我的个人 github 详细信息做两个承诺:https ://api.github.com/users/user ,另一个为我的 GitHub 存储库https://api.github.com/users/user/repos

我可以单独加载模型,但问题是我不知道如何在我的特定路线中同时加载两个模型。

查看代码

如何在我的特定路线中使用 Ember.RSVP.Promise 加载这些多个模型?

0 投票
1 回答
408 浏览

javascript - Promise 中处理上下文的正确方法

关于这个主题有几篇文章,但找不到一篇解释 Promises 中上下文概念的文章。让我们从一些代码开始(这取自 Ember.js 模块并进行了简化,但可以是任何支持 Promise 的 JS 代码):

现在,我的问题如下:

  1. 请参阅上面 prepareForProcessing 函数中的注释。当从 promise 的“then”方法调用时,“this”变量在方法内部指的是什么?如果我转储“this”对象,它似乎指的是某个全局节点/ember cli 对象而不是这个模块。
  2. 如何在方法中检索/访问上述属性?一种明显的方法是将选项作为参数传递,但不确定这是否是正确的方法。如果您查看此处的代码(第 34 行),则每个“then”调用都会传递选项。但是,这是否不违反 OOP 的具有可重用的类/实例级变量的原则?我对 JS 比较陌生,完全不了解基于“对象”的模型,所以如果这听起来像一个愚蠢的问题,请原谅我。

我将不胜感激任何帮助和指导。非常感谢你。

0 投票
1 回答
788 浏览

javascript - 使用承诺增量加载图像

我正在尝试加载相同的图像,但分辨率不同,一张一张,首先是 1.png,然后是 2.png,然后是 3.png,在 Promise 的帮助下,但是当我运行代码时,它只加载 3.png图片,我做错了什么?

第一个建议后的新代码,仍然面临同样的问题,只有一个图像被加载,如在 chrome 开发工具中看到的那样

0 投票
3 回答
465 浏览

javascript - Ember.RSVP 中的条件承诺

我有一个简单的 if else 场景,如果设置了变量,我需要做一些事情,否则只需在 else 部分执行:

如果设置了标志,那么我必须 doSomething() 和 doNextThing()

doSomething 和 doNextThing 都返回承诺。实现这一点的最佳方法是什么?

目前我的代码如下所示:

在更干净的代码段中优雅地结合两者的最佳方法是什么?

我试过了:

但这不起作用。似乎承诺 doSomething 永远不会解决,代码会立即返回。我还尝试了上述几种变体,包括:

和:

但除了第一个选项外,没有任何效果。所以,我的问题是 - 有没有更好/优雅的方法来实现这一目标?

0 投票
2 回答
220 浏览

javascript - Ember 理解路由/控制器之间的执行流程

我有一个“盒子”路线/控制器,如下所示;

我的路线看起来像;

我的模板看起来像

我的 doPost 方法如下所示;

鉴于上述设置,我想了解执行的流程/顺序(即针对不同的钩子)。我试图调试,它不断地从一个类跳到另一个类。另外,2个具体问题;

  1. 我原以为最初会触发“激活”钩子,但发现事实并非如此。它首先执行“gridParas”钩子,即在“activate”钩子之前。是因为模板中指定了“gridParas”吗?

  2. 当我为 /myService1 执行 this.doPost() 时,它必须是“同步”请求,否则执行流程会发生变化,我会收到错误消息。实际上,我希望仅在收到响应后才执行 filterCols() 控制器中的代码,即 this.set('gridVals.layout', this.get('layouts')[this.get('type')])来自 /myService1。但是,到目前为止,我必须使用“同步”请求来执行此操作,否则使用“异步”,执行将移至 filterCols(),并且由于我还没有响应,因此会引发错误。

补充一下,我使用的是 Ember v 2.0

0 投票
1 回答
125 浏览

javascript - 无法开玩笑地测试 rsvp 承诺

我坚持为使用 rsvp 承诺的代码编写单元测试。我尝试使用pit测试,但没有让测试通过 rsvp,但是嵌入式承诺工作得很好:

我的 package.json 中的相关细节:

.babelrc:

我看到两种可能的解决方法,但都不像:

  1. 使用嵌入式承诺模拟 rsvp 承诺。缺点:单元测试会变得更加冗长,我需要模拟其他我不想做的函数,例如 rsvp.all。
  2. 从 rsvp 迁移到嵌入式承诺。这是可能的,但是我已经使用了一个依赖于 rsvp 的库来发出 ajax 请求。我也不确定嵌入式 Promise 是否可以替换 rsvp 提供的所有内容(例如“all”和其他辅助函数)。
0 投票
2 回答
2126 浏览

promise - 如何将承诺值解析为正常值

我们如何才能将 promise 解析为正常的数值。

我在量角器自动化中有一个用例,首先我必须调用一个异步操作,然后那个结果值不应该是一个承诺。

我正在使用量角器框架

编辑