Yield 不停止 ember 并发任务中的流程

Yield not stopping the flow in ember concurrency task

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 return 缓存记录的情况。这取决于您是否已经加载记录(可能来自之前的 findRecordfindAllquery 在另一条路线上,以及 ember-data 适配器的配置方式:shouldBackgroundReloadRecord and shouldBackgroundReloadAll 是适配器上默认为 returning true 的方法。当这些方法 return true 时,缓存的记录立即被 returned,但是在“后台”再次获取记录。