问题标签 [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 投票
1 回答
2087 浏览

ember.js - 如何链接 RSVP 承诺并返回原始拒绝/成功函数?

我有一个简单的 rsvp 助手,可以让我将 ajax 调用包装为一个简单的承诺

这很好用,并且可以像您期望的那样。问题是当我的代码需要另一个首先包装这个低级别的承诺时。

例子

在我的 ember 控制器中,我可能会这样做

在我的约会模型中,我这样做是为了“删除”

当前我的控制器始终处于“失败”状态(即使我的 ajax 方法返回 204 并且成功)。如何在我的模型中从这个 remove 方法执行“链式承诺”返回,以使控制器能够像上面那样将其作为“thenable”调用?

0 投票
2 回答
262 浏览

javascript - 已定义函数坚持其未定义

我有一个简单的小程序,它将两个函数定义为变量。这些函数都返回RSVP Promises,以便它们可以像我在下面所做的那样链接在一起。我经常使用这种模式,但在这种情况下我会陷入疯狂......

虽然我的调试语句清楚地表明这两个函数实际上是定义的,但当我执行它们时,我得到一个未处理的异常:

类型错误:未定义不是函数

请帮助我失去理智。欢迎任何和所有建议。


对于一些额外的上下文,这里是 的定义opChown


现在基于@bergi 的大指针,我确实可以在 Node 的 'uncaughtException' 事件中使用堆栈跟踪,这里是堆栈跟踪,它清楚地指出问题出在opChown函数内部而不是函数本身:

0 投票
1 回答
58 浏览

javascript - 尝试让 Javascript 函数同步运行

我在使用以下代码段时遇到问题。我的 init 方法需要运行并完成 getLocation() 函数,然后 initializeMapp() 和 geoListen() 才能运行。我将 rsvp.js 链接为资源,但不太确定如何实现。我还尝试了 jQuery $when.done 方法。任何帮助表示赞赏。

jQuery方法:

回复方式:

0 投票
1 回答
2189 浏览

javascript - 将 promise 包装到 Sync 函数中

我正在编写一个节点 CLI,其中同步行为通常比异步更合适,我希望能够利用以下约定:

例如——使用RSVP承诺实现——我编写了以下用于调用 shell 脚本的异步函数:

这行得通,现在我想同步制作:

我认为会起作用的shellSync是:

不幸的是,这只是运行,永远不会返回。虽然我可能会实现轮询间隔来执行条件语句,而不是 while 循环:

当然,删除 while 循环会导致函数立即返回(带有尚未实现的承诺)。因此,我尝试将 while 循环的“等待”功能与实现的轮询频率结合起来

0 投票
2 回答
73 浏览

promise - then() 我如何兑现承诺?

我在浏览器中使用 RSVP.js 库。

我有一个承诺applicationReady

我还有一个承诺loadSomeData

我有最后的承诺,configureUI

每个都依赖于先前的承诺来完成它的工作。我如何让这三个承诺串联运行?我显然错过了一些东西。

谢谢!

解决方案:

好的,这是答案:

不工作:

是否有效:

Promise 和返回 Promise 的函数是有区别的。then()不明白这一点的无赖。then(promise) 的用例是什么?

0 投票
1 回答
1063 浏览

ember.js - Ember.RSVP.All error Array 方法必须提供一个 Array

从讨论.emberjs.com 交叉发布

我正在尝试保存模型,然后在成功保存后保存一些与初始模型相关的其他模型。这些在标准输入字段中,我不能/不知道如何绑定到 ED,所以我只是使用标准 jQuery 选择器来查找输入并保存模型。所有模型都正确保存,但由于错误而Ember.RSVP.all正在回调。我不确定我应该在哪里提供一个数组......REJECTArray Methods must be provided an Array

我一路上检查了各种元素,并且var promises是一系列预期的承诺。我唯一能想到的是results传递给我的解析回调的值应该是一个数组?如果是这种情况,我不确定如何使其成为数组,而不仅仅是传入Ember.A()[]

这是我的控制器中的相关代码。

0 投票
1 回答
1928 浏览

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?):

1) async belongsTo 关系应该如何序列化?

2) async belongsTo 是否支持相关模型赋值?

本质上,我所要做的就是将属性移到Ember.RSVP.all()a 之后:get()

因此get(),在保存模型之前,我需要属于属于关系的属性。我不知道这是否是一个错误。也许对 emberjs 有更多了解的人可以帮助阐明这一点。

0 投票
1 回答
355 浏览

javascript - Ember.js:路由返回多个模型,包括一个承诺,给出错误

我正在尝试为一条路线返回多个模型,是的,我正在使用 RSVP.Hash(GitHub 链接):

问题是,其中一个对象来自承诺本身,因为我只想从该模型中找到第一个对象(GitHub链接):

当我在创建 LocalPlayer 对象后尝试转到 games.index 路由时,它说:“处理路由时出错:games.index undefined is not a function TypeError: undefined is not a function”

回购在GitHub 上- 完全开源。请帮忙。

0 投票
1 回答
1227 浏览

ember.js - Ember.RSVP.all.then 是否采用 1 或 2 个参数?

我正在创建一个发送一堆承诺的函数,我想让用户知道当他们全部解决后发生了什么。但是,我不确定Ember.RSVP.all.then()应该采用什么参数。现在我有这样的事情:

但是,我也看到过这样的模式:

对此的任何澄清将不胜感激。谢谢!

0 投票
1 回答
2167 浏览

javascript - 如何使用承诺异步读取多个文件,然后继续

我是新的承诺和使用rsvp实现。

我想异步读取文件列表,然后仅在读取所有文件后才继续执行另一个任务。

我已经了解了读取一个文件并链接到下一个任务的基本结构:

我想做这样的事情:

我在文档中看到了一系列承诺和承诺散列,但我不知道哪个最相关,或者如何使用它们。我需要一个在我上面的问题的上下文中使用它们的例子来理解它们。