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

javascript - Node.js - 在另一个方法完全执行后调用一个方法

我有两种简单的方法:

现在我只想确保在完成done()时调用do()(**do() 方法包含对 Mysql DB 的异步请求

我怎样才能做到这一点?**

显然这不会按顺序排列这些方法:

所以我尝试了:

这就是我用于承诺https://github.com/tildeio/rsvp.js/#arrays-of-promises

0 投票
1 回答
824 浏览

ember.js - Ember 数据在保存时将 id 作为字符串发送

我正在使用模型“鸡尾酒”、“会员”和“成分”创建一个鸡尾酒应用程序。鸡尾酒和配料模型非常容易解释,会员模型适用于将鸡尾酒与配料联系起来的对象。

我遇到的问题是,当我使用 ember-data 创建鸡尾酒,然后它的成员资格成分和 REST 调用的鸡尾酒 ID 是字符串而不是整数时,请求正文如下所示:

当我想要什么时:

这是我执行保存的代码,我对 Promise 的想法很陌生,所以不确定这是否以最可取的方式构建。

0 投票
2 回答
1560 浏览

javascript - 链接承诺后未调用承诺成功回调

我无法按照 RSVP 文档获得连锁承诺。我有一个案例,我试图从服务器获取一些数据。如果由于某种原因发生错误,我想从本地文件中获取数据。

我正在尝试为此链接承诺。

我创建了一个简化的示例。下面的示例将给出一个输出,但不是我想要的。 http://emberjs.jsbin.com/cobax/3

这个例子是我想要的,但它不会调用最后的'then'。 http://emberjs.jsbin.com/cobax/3

基本上我想处理最后一个“then”方法的服务器/本地响应。我还希望将所有回调保持在一个级别。

第二个代码中的错误是什么?


更新

正如@marcio-junior 提到的,延迟的jquery 是问题所在。这是他的固定垃圾箱。 http://jsbin.com/fimacavu/1/edit

我的实际代码不返回模型对象,它向 json 文件发出另一个 getJSON 请求。我无法在 bin 中复制它,因为我认为 js bin 不允许我们托管静态文件。这是代码,但它不会工作。由于一些js错误,它失败了。

你能帮我解决这个问题吗?这些承诺有点难以理解。

这是我看到的错误堆栈

0 投票
2 回答
5161 浏览

javascript - 多次履行承诺

我正在使用Promises构建一个模块,我在多个 url上进行多次 http 调用,解析响应,然后再次进行更多 http 调用。

问题是 - 如果我使用承诺,除非发出所有 http 请求,否则我无法解析模块。这是因为 -Once a promise has been resolved or rejected, it cannot be resolved or rejected again.

构建我自己的承诺版本还是有替代方法?

0 投票
2 回答
6766 浏览

javascript - 如何使用 EmberData 返回由 EmberJS 中的嵌套模型组成的承诺?

环境

模型

我已经简化了我的用例,使问题更容易理解和回答。假设我们有 3 个模型CountryRegionArea

预期成绩

Route 的模型钩子应该返回一个对象数组。像这样:

注意:缩进只是为了使示例更具可读性。

目前的方法

错误

我得到Error while loading route: TypeError: Object [object Array] has no method 'then'的显然来自这段代码:

但是,这应该表明我遇到的真正问题:

问题

我需要countries下定决心regions获得areas. 我一直在检查RSVP.hashandRSVP.all函数,阅读官方 API 并观看这个演讲,但是我有点未能创建正确的代码来链接 Promise 并在最终then修改返回的结果以符合我的期望。

最后的想法

有人告诉我,像这样加载数据可能会导致许多 HTTP 请求,并且可能通过侧载更好地解决这个问题,但是:

  • 此时,我使用FixturesAdapter,所以 HTTP 请求不是问题
  • 我真的很想更好地理解 RSVP 和 Promises

这就是为什么弄清楚这应该如何正确完成对我来说很重要。

编辑 1:应用kingpin2k建议的更改

我为我的示例创建了一个JSBin,其中包含 kingpin2k 的 anwser 建议的更改。

虽然代码有效,但结果是......意想不到的:

  • countries数组中我找到了countryregion对象。为什么?
  • 和对象似乎已加载,但区域没有(请参阅 JSBin 中的控制台日志结果)。country为什么region

编辑 2:来自 Edit1 的意外行为的解释。

所以我终于注意到我偏离了 Ember 的正义之路的地方。Kingpin2k 的 anwser 是一个巨大的进步,但它包含一个小错误:

所以..现在我终于正确解决了所有对象(国家、地区、地区)并且可以继续我的工作:)

编辑 3:此JSBin中的工作解决方案!

0 投票
3 回答
439 浏览

javascript - EmberJS "this" 在 promise (find) 回调中改变

当我想在控制器操作中从服务器获取帐户时,例如:

它会引发错误,因为在线上的“this”this.set('account', account)不再是控制器。我现在如何从这个承诺回调中在控制器上设置“帐户”?

0 投票
1 回答
886 浏览

javascript - Promises/A+ 的实现有何不同?

规范没有涵盖Promise 库的哪些方面?实现之间有哪些不同?

请举例说明实际差异(例如 Bluebird 和 Q 之间的差异)。

0 投票
1 回答
9413 浏览

javascript - 如何在任意数量的链元素上使用 map 或 reduce 运行 promise-then 链?

我坚持以下几点:

脚本返回任意数字n或数组,如下所示:

我需要使用 promise 遍历数组then(),但由于我不知道会有多少元素,所以我最终这样做了:

我的问题是我的reduce/map两个都在我的异步代码运行之前触发了所有迭代,所以我得到了current控制台的 3 倍,然后是done控制台。所以我所有的地图“循环”都会立即运行,结果会在稍后(也)一点点(太)后运行......

我正在使用这个RSVP实现,但它是 A+,所以应该不是问题。我一直在尝试按照此处提供的答案工作,但我无法使其正常工作。

问题:
是否可以使用任意数量的then语句创建“then-chain”。如果是这样,一些指针表示赞赏!

谢谢!

0 投票
2 回答
388 浏览

javascript - 当我需要阻塞调用时如何处理 Ember 中的异步属性?

我们正在使用带有嵌入子代的 hasMany 模型。这很好,所以每当我调用 model.get('children') 时,一切都正常。

我们现在已经将该 children 属性更改为 async:true,我似乎无法找到有关如何处理此问题的适当文档。

让我给你举个例子。为了简单起见,我将使用简化的 json 来表示我的 Ember 设置。

假设我有一个这样的模型

假设我有一个这样的模板

我有一个控制器

好的,因此在使用 async: false 时使用此设置,一切正常。

但是现在,在 async 为真的情况下,控制器中对 .get('children') 的调用有时不会返回任何内容,因为我猜它是异步的。

现在我可以使用 Promise,并将我的控制器重构为:

第二个重构的问题是,我不再返回 isActive 值,而是返回 promise 对象。

但是模板不需要承诺,它需要返回值。

那么,如何确保异步已加载,同时能够返回调用的实际结果而不是承诺?

0 投票
1 回答
2415 浏览

node.js - 在 TypeScript 中,如何在 Node.js 上使用带有 RSVP 实现的 Promises

在 Node.js 上,将 Promise 与 TypeScript 一起使用的正确方法是什么?

目前我使用定义文件“rsvp.d.ts”:

…在我的“.ts”文件中:

它有效,但对“全局”的引用是丑陋的。

注意。我未能使用来自definitelyTyped 的定义文件