问题标签 [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.
node.js - 如何存根 Promise 以便我的测试可以同步运行?
我正在尝试通过存根模块的依赖项来对模块进行单元测试,在这种情况下UserManager
该模块的简化版本如下:
我正在对 UserManager 的saveCode
函数进行存根,该函数返回一个Promise
这样的函数,它返回一个已解决的 Promise,但是当我被调用时,唉,在断言assert
时还没有被调用。res.redirect
res.redirect
单元测试的简化版本是:
如何正确地存根承诺,以便被测方法同步运行?
ember.js - 使用 Ember.PromiseProxyMixin 时如何冒泡被拒绝的承诺
我将 Ember 的 PromiseProxyMixin 与 AJAX 数据调用和 Ember RSVP Promises 一起使用。我不想在每个路由/模板中加入错误处理,而是将一个被拒绝的承诺冒泡到 Application 路由中的错误处理程序,如下所示:
目前,如果一个 Promise 被拒绝,被拒绝的 Promise 不会冒泡到 Application 路由(这是因为 PromiseProxyMixin 附加到一个 Promise 的 .fail() 函数并防止进一步冒泡吗?如果是这样,有没有办法继续冒泡?)
是否可以使用 PromiseProxyMixin 并允许被拒绝的承诺冒泡到 Application 路由?
ember.js - Emberjs 和承诺
我的编码风格可能很糟糕,因为我还在学习。我需要知道如何处理将额外参数传递给 Emberjs 中的链式承诺。
我想要达到的目标。我的路线中的许多承诺看起来很混乱,所以我决定为每个承诺编写函数
我的同一条路线的动作哈希包含
当我调用函数时self._saveCity()
,它返回一个好的承诺,然后将解析后的值传递给函数,this._getBikeRiders
该_getBikeRiders(value)
函数有一个参数值,该参数值是从先前的承诺中收集的,在这种情况下保存城市,所以我们有城市名称。
现在,如果在_getBikeRiders(value)
函数中我需要对其他值做一些事情,我不能将任何东西传递给它。
示例
self._getBikeRiders(value,"some paramer)
没有通过两者。
我失去了函数内部的上下文,_getBikeRiders: function()
所以我无法访问它(我得到全局窗口)。
我不知道如何在这里实现这个 Ember.RSVP.Promise 可以接受上下文参数
javascript - 在同一条路由上管理 Ember 多个 RSVP 承诺
我正在使用 GitHub API 以在特定路径中加载模型
我正在为我的个人 github 详细信息做两个承诺:https ://api.github.com/users/user ,另一个为我的 GitHub 存储库https://api.github.com/users/user/repos
我可以单独加载模型,但问题是我不知道如何在我的特定路线中同时加载两个模型。
查看代码
如何在我的特定路线中使用 Ember.RSVP.Promise 加载这些多个模型?
javascript - Promise 中处理上下文的正确方法
关于这个主题有几篇文章,但找不到一篇解释 Promises 中上下文概念的文章。让我们从一些代码开始(这取自 Ember.js 模块并进行了简化,但可以是任何支持 Promise 的 JS 代码):
现在,我的问题如下:
- 请参阅上面 prepareForProcessing 函数中的注释。当从 promise 的“then”方法调用时,“this”变量在方法内部指的是什么?如果我转储“this”对象,它似乎指的是某个全局节点/ember cli 对象而不是这个模块。
- 如何在方法中检索/访问上述属性?一种明显的方法是将选项作为参数传递,但不确定这是否是正确的方法。如果您查看此处的代码(第 34 行),则每个“then”调用都会传递选项。但是,这是否不违反 OOP 的具有可重用的类/实例级变量的原则?我对 JS 比较陌生,完全不了解基于“对象”的模型,所以如果这听起来像一个愚蠢的问题,请原谅我。
我将不胜感激任何帮助和指导。非常感谢你。
javascript - 使用承诺增量加载图像
我正在尝试加载相同的图像,但分辨率不同,一张一张,首先是 1.png,然后是 2.png,然后是 3.png,在 Promise 的帮助下,但是当我运行代码时,它只加载 3.png图片,我做错了什么?
第一个建议后的新代码,仍然面临同样的问题,只有一个图像被加载,如在 chrome 开发工具中看到的那样
javascript - Ember.RSVP 中的条件承诺
我有一个简单的 if else 场景,如果设置了变量,我需要做一些事情,否则只需在 else 部分执行:
如果设置了标志,那么我必须 doSomething() 和 doNextThing()
doSomething 和 doNextThing 都返回承诺。实现这一点的最佳方法是什么?
目前我的代码如下所示:
在更干净的代码段中优雅地结合两者的最佳方法是什么?
我试过了:
但这不起作用。似乎承诺 doSomething 永远不会解决,代码会立即返回。我还尝试了上述几种变体,包括:
和:
但除了第一个选项外,没有任何效果。所以,我的问题是 - 有没有更好/优雅的方法来实现这一目标?
javascript - Ember 理解路由/控制器之间的执行流程
我有一个“盒子”路线/控制器,如下所示;
我的路线看起来像;
我的模板看起来像
我的 doPost 方法如下所示;
鉴于上述设置,我想了解执行的流程/顺序(即针对不同的钩子)。我试图调试,它不断地从一个类跳到另一个类。另外,2个具体问题;
我原以为最初会触发“激活”钩子,但发现事实并非如此。它首先执行“gridParas”钩子,即在“activate”钩子之前。是因为模板中指定了“gridParas”吗?
当我为 /myService1 执行 this.doPost() 时,它必须是“同步”请求,否则执行流程会发生变化,我会收到错误消息。实际上,我希望仅在收到响应后才执行 filterCols() 控制器中的代码,即 this.set('gridVals.layout', this.get('layouts')[this.get('type')])来自 /myService1。但是,到目前为止,我必须使用“同步”请求来执行此操作,否则使用“异步”,执行将移至 filterCols(),并且由于我还没有响应,因此会引发错误。
补充一下,我使用的是 Ember v 2.0
javascript - 无法开玩笑地测试 rsvp 承诺
我坚持为使用 rsvp 承诺的代码编写单元测试。我尝试使用pit
测试,但没有让测试通过 rsvp,但是嵌入式承诺工作得很好:
我的 package.json 中的相关细节:
.babelrc:
我看到两种可能的解决方法,但都不像:
- 使用嵌入式承诺模拟 rsvp 承诺。缺点:单元测试会变得更加冗长,我需要模拟其他我不想做的函数,例如 rsvp.all。
- 从 rsvp 迁移到嵌入式承诺。这是可能的,但是我已经使用了一个依赖于 rsvp 的库来发出 ajax 请求。我也不确定嵌入式 Promise 是否可以替换 rsvp 提供的所有内容(例如“all”和其他辅助函数)。
promise - 如何将承诺值解析为正常值
我们如何才能将 promise 解析为正常的数值。
我在量角器自动化中有一个用例,首先我必须调用一个异步操作,然后那个结果值不应该是一个承诺。
我正在使用量角器框架
编辑