失败触发取消
失败触发的结构化取消
function* launchCampaign() {
yield* branch(function* sendCampaign() {
yield* spawn(function* sendEmailBatch() {
yield* sleep(1000);
throw new Error("email provider failed");
});
yield* spawn(function* refreshAudience() {
yield* sleep(6000);
});
yield* sleep(6000);
});
} launchCampaign 进入 branch 运行 sendCampaign。
sendEmailBatch 和 refreshAudience 都属于 sendCampaign scope。
sendEmailBatch 抛错后,branch 取消仍在 sleep 的 refreshAudience 和 sendCampaign。
branch 随后抛出 scope failure,launchCampaign 由此中断。