问题标签 [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.
ember.js - 如何链接 RSVP 承诺并返回原始拒绝/成功函数?
我有一个简单的 rsvp 助手,可以让我将 ajax 调用包装为一个简单的承诺
这很好用,并且可以像您期望的那样。问题是当我的代码需要另一个首先包装这个低级别的承诺时。
例子
在我的 ember 控制器中,我可能会这样做
在我的约会模型中,我这样做是为了“删除”
当前我的控制器始终处于“失败”状态(即使我的 ajax 方法返回 204 并且成功)。如何在我的模型中从这个 remove 方法执行“链式承诺”返回,以使控制器能够像上面那样将其作为“thenable”调用?
javascript - 已定义函数坚持其未定义
我有一个简单的小程序,它将两个函数定义为变量。这些函数都返回RSVP Promises,以便它们可以像我在下面所做的那样链接在一起。我经常使用这种模式,但在这种情况下我会陷入疯狂......
虽然我的调试语句清楚地表明这两个函数实际上是定义的,但当我执行它们时,我得到一个未处理的异常:
类型错误:未定义不是函数
请帮助我失去理智。欢迎任何和所有建议。
对于一些额外的上下文,这里是 的定义opChown
:
现在基于@bergi 的大指针,我确实可以在 Node 的 'uncaughtException' 事件中使用堆栈跟踪,这里是堆栈跟踪,它清楚地指出问题出在opChown
函数内部而不是函数本身:
javascript - 尝试让 Javascript 函数同步运行
我在使用以下代码段时遇到问题。我的 init 方法需要运行并完成 getLocation() 函数,然后 initializeMapp() 和 geoListen() 才能运行。我将 rsvp.js 链接为资源,但不太确定如何实现。我还尝试了 jQuery $when.done 方法。任何帮助表示赞赏。
jQuery方法:
回复方式:
javascript - 将 promise 包装到 Sync 函数中
我正在编写一个节点 CLI,其中同步行为通常比异步更合适,我希望能够利用以下约定:
例如——使用RSVP承诺实现——我编写了以下用于调用 shell 脚本的异步函数:
这行得通,现在我想同步制作:
我认为会起作用的shellSync
是:
不幸的是,这只是运行,永远不会返回。虽然我可能会实现轮询间隔来执行条件语句,而不是 while 循环:
当然,删除 while 循环会导致函数立即返回(带有尚未实现的承诺)。因此,我尝试将 while 循环的“等待”功能与实现的轮询频率结合起来
promise - then() 我如何兑现承诺?
我在浏览器中使用 RSVP.js 库。
我有一个承诺applicationReady
我还有一个承诺loadSomeData
我有最后的承诺,configureUI
每个都依赖于先前的承诺来完成它的工作。我如何让这三个承诺串联运行?我显然错过了一些东西。
谢谢!
解决方案:
好的,这是答案:
不工作:
是否有效:
Promise 和返回 Promise 的函数是有区别的。then()
不明白这一点的无赖。then(promise) 的用例是什么?
ember.js - Ember.RSVP.All error Array 方法必须提供一个 Array
我正在尝试保存模型,然后在成功保存后保存一些与初始模型相关的其他模型。这些在标准输入字段中,我不能/不知道如何绑定到 ED,所以我只是使用标准 jQuery 选择器来查找输入并保存模型。所有模型都正确保存,但由于错误而Ember.RSVP.all
正在回调。我不确定我应该在哪里提供一个数组......REJECT
Array Methods must be provided an Array
我一路上检查了各种元素,并且var promises
是一系列预期的承诺。我唯一能想到的是results
传递给我的解析回调的值应该是一个数组?如果是这种情况,我不确定如何使其成为数组,而不仅仅是传入Ember.A()
或[]
这是我的控制器中的相关代码。
javascript - 从 createRecord() save() 序列化中省略 Ember Data belongsTo 异步关系
编辑 11/16/14:版本信息
我正在努力做一些我认为使用 ember 和 ember-data 应该相当简单的事情,但到目前为止我还没有运气。
本质上,我想使用服务器数据来填充<select>
下拉菜单。提交表单时,应根据用户选择的数据创建模型。然后将模型与 ember 数据一起保存并以以下格式转发到服务器:
问题是,当模型关系被定义为异步时,typeId 和 versionId 被遗漏了,如下所示:
让我感到困惑的部分,也可能是我的错误所在,是控制器:
当 async 设置为 false 时,ember 会createRecord().save()
正确处理 POST 请求。
当 async 为 true 时,ember 可以完美地处理多个请求的 GET 请求,但不会在createRecord().save()
. 只有基本属性被序列化:
我意识到以前有人问过这个问题,但到目前为止我还没有找到满意的答案,也没有找到任何适合我需要的东西。那么,如何让 belongsTo 关系正确序列化呢?
为了确保一切都在这里,我将添加到目前为止的自定义序列化:
和一个选择:
如有必要,我将附加其他路由和控制器(FilesRoute、FilesController、VersionsRoute、TypesRoute)
编辑11/16/14
我根据两个相关线程中的信息找到了一个可行的解决方案(hack?):
2) async belongsTo 是否支持相关模型赋值?
本质上,我所要做的就是将属性移到Ember.RSVP.all()
a 之后:get()
因此get()
,在保存模型之前,我需要属于属于关系的属性。我不知道这是否是一个错误。也许对 emberjs 有更多了解的人可以帮助阐明这一点。
ember.js - Ember.RSVP.all.then 是否采用 1 或 2 个参数?
我正在创建一个发送一堆承诺的函数,我想让用户知道当他们全部解决后发生了什么。但是,我不确定Ember.RSVP.all.then()
应该采用什么参数。现在我有这样的事情:
但是,我也看到过这样的模式:
对此的任何澄清将不胜感激。谢谢!