问题标签 [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.
javascript - Node.js - 在另一个方法完全执行后调用一个方法
我有两种简单的方法:
现在我只想确保在完成done()
时调用do()
(**do() 方法包含对 Mysql DB 的异步请求)
我怎样才能做到这一点?**
显然这不会按顺序排列这些方法:
所以我尝试了:
这就是我用于承诺https://github.com/tildeio/rsvp.js/#arrays-of-promises
ember.js - Ember 数据在保存时将 id 作为字符串发送
我正在使用模型“鸡尾酒”、“会员”和“成分”创建一个鸡尾酒应用程序。鸡尾酒和配料模型非常容易解释,会员模型适用于将鸡尾酒与配料联系起来的对象。
我遇到的问题是,当我使用 ember-data 创建鸡尾酒,然后它的成员资格成分和 REST 调用的鸡尾酒 ID 是字符串而不是整数时,请求正文如下所示:
当我想要什么时:
这是我执行保存的代码,我对 Promise 的想法很陌生,所以不确定这是否以最可取的方式构建。
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错误,它失败了。
你能帮我解决这个问题吗?这些承诺有点难以理解。
这是我看到的错误堆栈
javascript - 多次履行承诺
我正在使用Promises构建一个模块,我在多个 url上进行多次 http 调用,解析响应,然后再次进行更多 http 调用。
问题是 - 如果我使用承诺,除非发出所有 http 请求,否则我无法解析模块。这是因为 -Once a promise has been resolved or rejected, it cannot be resolved or rejected again.
构建我自己的承诺版本还是有替代方法?
javascript - 如何使用 EmberData 返回由 EmberJS 中的嵌套模型组成的承诺?
环境
模型
我已经简化了我的用例,使问题更容易理解和回答。假设我们有 3 个模型Country
:Region
和Area
:
预期成绩
Route 的模型钩子应该返回一个对象数组。像这样:
注意:缩进只是为了使示例更具可读性。
目前的方法
错误
我得到Error while loading route: TypeError: Object [object Array] has no method 'then'
的显然来自这段代码:
但是,这应该表明我遇到的真正问题:
问题
我需要countries
下定决心regions
获得areas
. 我一直在检查RSVP.hash
andRSVP.all
函数,阅读官方 API 并观看这个演讲,但是我有点未能创建正确的代码来链接 Promise 并在最终then
修改返回的结果以符合我的期望。
最后的想法
有人告诉我,像这样加载数据可能会导致许多 HTTP 请求,并且可能通过侧载更好地解决这个问题,但是:
- 此时,我使用
FixturesAdapter
,所以 HTTP 请求不是问题 - 我真的很想更好地理解 RSVP 和 Promises
这就是为什么弄清楚这应该如何正确完成对我来说很重要。
编辑 1:应用kingpin2k建议的更改
我为我的示例创建了一个JSBin,其中包含 kingpin2k 的 anwser 建议的更改。
虽然代码有效,但结果是......意想不到的:
- 在
countries
数组中我找到了country
和region
对象。为什么? - 和对象似乎已加载,但区域没有(请参阅 JSBin 中的控制台日志结果)。
country
为什么?region
编辑 2:来自 Edit1 的意外行为的解释。
所以我终于注意到我偏离了 Ember 的正义之路的地方。Kingpin2k 的 anwser 是一个巨大的进步,但它包含一个小错误:
所以..现在我终于正确解决了所有对象(国家、地区、地区)并且可以继续我的工作:)
编辑 3:此JSBin中的工作解决方案!
javascript - EmberJS "this" 在 promise (find) 回调中改变
当我想在控制器操作中从服务器获取帐户时,例如:
它会引发错误,因为在线上的“this”this.set('account', account)
不再是控制器。我现在如何从这个承诺回调中在控制器上设置“帐户”?
javascript - Promises/A+ 的实现有何不同?
规范没有涵盖Promise 库的哪些方面?实现之间有哪些不同?
请举例说明实际差异(例如 Bluebird 和 Q 之间的差异)。
javascript - 如何在任意数量的链元素上使用 map 或 reduce 运行 promise-then 链?
我坚持以下几点:
脚本返回任意数字n
或数组,如下所示:
我需要使用 promise 遍历数组then()
,但由于我不知道会有多少元素,所以我最终这样做了:
我的问题是我的reduce/map
两个都在我的异步代码运行之前触发了所有迭代,所以我得到了current
控制台的 3 倍,然后是done
控制台。所以我所有的地图“循环”都会立即运行,结果会在稍后(也)一点点(太)后运行......
我正在使用这个RSVP实现,但它是 A+,所以应该不是问题。我一直在尝试按照此处提供的答案工作,但我无法使其正常工作。
问题:
是否可以使用任意数量的then
语句创建“then-chain”。如果是这样,一些指针表示赞赏!
谢谢!
javascript - 当我需要阻塞调用时如何处理 Ember 中的异步属性?
我们正在使用带有嵌入子代的 hasMany 模型。这很好,所以每当我调用 model.get('children') 时,一切都正常。
我们现在已经将该 children 属性更改为 async:true,我似乎无法找到有关如何处理此问题的适当文档。
让我给你举个例子。为了简单起见,我将使用简化的 json 来表示我的 Ember 设置。
假设我有一个这样的模型:
假设我有一个这样的模板:
我有一个控制器:
好的,因此在使用 async: false 时使用此设置,一切正常。
但是现在,在 async 为真的情况下,控制器中对 .get('children') 的调用有时不会返回任何内容,因为我猜它是异步的。
现在我可以使用 Promise,并将我的控制器重构为:
第二个重构的问题是,我不再返回 isActive 值,而是返回 promise 对象。
但是模板不需要承诺,它需要返回值。
那么,如何确保异步已加载,同时能够返回调用的实际结果而不是承诺?
node.js - 在 TypeScript 中,如何在 Node.js 上使用带有 RSVP 实现的 Promises
在 Node.js 上,将 Promise 与 TypeScript 一起使用的正确方法是什么?
目前我使用定义文件“rsvp.d.ts”:
…在我的“.ts”文件中:
它有效,但对“全局”的引用是丑陋的。
注意。我未能使用来自definitelyTyped 的定义文件。