【问题标题】:Yield not stopping the flow in ember concurrency task产生不停止 ember 并发任务中的流程
【发布时间】:2021-02-18 03:21:05
【问题描述】:
if (isEmpty(contact) || isEmpty(get(contact, 'emails'))) {
  contact = yield store.findRecord('contact', contactId);
}

if (isEmpty(contact) || isEmpty(get(contact, 'emails'))) {
  flashMessages.danger(i18n.t('email.cpq_document_email_missing'));
  return false;
}

第二个块在 Promise 运行时运行并且我得到一个错误。它不应该在承诺解决之前停止流程吗?

promise 运行良好,下次运行

【问题讨论】:

  • 是的,假设您使用的是 ember-data findRecord 应该返回一个承诺并等待。请包含组件中的所有代码以及您看到的错误,因为问题似乎不在此块中。

标签: javascript ember.js yield ember-concurrency


【解决方案1】:

假设您使用的是ember-data,您可能会遇到findRecord 返回缓存记录的情况。这取决于您是否已经加载了记录(可能来自之前的 findRecordfindAllquery 在另一条路由上,以及如何配置 ember-data 适配器:shouldBackgroundReloadRecordshouldBackgroundReloadAll 是方法在默认返回true的适配器上。当这些方法返回true时,缓存的记录会立即返回,但记录会在“后台”中再次获取。

【讨论】:

  • 这是有道理的,我已经有了联系人对象,但它没有电子邮件属性,所以我再次获取它。有没有办法阻止它使用缓存的数据?
  • 添加 { reload: true } 已修复,感谢您的澄清
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多