shajara流程图解scope 拥有的工作
中文

scope 拥有的工作

child scope 拥有的工作必须先结束,调用方才会继续。

branch(commitArticle)spawn(updateSearchIndex)owned processbranch waits for child scopepublishArticlependingupdateSearchIndexpendingcommitArticlepending
function* publishArticle() {
  const result = yield* branch(function* commitArticle() {
    yield* spawn(function* updateSearchIndex() {
      yield* sleep(1000);
    });

    return "published";
  });

  return result;
}
publishArticle 调用 branch(...),进入 commitArticle child scope。
updateSearchIndex 在 commitArticle scope 内由 spawn 启动。
commitArticle 在 updateSearchIndex 完成前先返回 published。
updateSearchIndex 结束后,publishArticle 才会从 branch(...) 继续。