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