【发布时间】:2017-12-23 18:48:18
【问题描述】:
我是一位经验丰富的 Ember.js 开发人员。在指南中,我们可以找到一个具有全名的计算属性示例(同步、简单、依赖于名字和姓氏)。然而,在野外,我们可以发现大量以异步方式使用计算属性(例如,在 promise 解析后设置自身 - 而第一次运行并获取返回 undefined)。
我看到这个异步计算属性越多,我就越想知道 - 计算属性是否意味着要与异步代码一起使用?不是自找麻烦吗?
一个常见问题是其他计算属性 (CP2) 依赖于异步 CP1。 CP2 得到 CP1 但它得到undefined(因为 CP1 将在稍后设置它的值,因为它是异步的)。 CP2 以错误的 CP2 值 (undefined) 完成计算。 CP1 自行设置,但 CP2 不再重新计算(即使 CP1 已更改),因为模板中未引用 CP2(这意味着它已绑定并且始终需要其值,总是在 CP1 更改时重新计算)-而是被一些 JavaScript 调用引用。
这方面的实际示例可能是根据订单中的商品计算总订单(来自电子商务商店)价格。计算属性依赖于与项目的异步关系,其中可能包含其他异步关系,如税款类型。
【问题讨论】:
标签: javascript asynchronous ember.js ember-data computed-properties