shajara流程图解首个结果
中文

首个结果

race(...) 返回第一个成功值,并取消剩余工作。

race(readCache, fetchNetwork)readCachefetchNetworkwinnerremaining workfirst resultloadProfilependingreadCachependingfetchNetworkpendingrace resultpending
function* loadProfile() {
  const profile = yield* race([
    function* readCache() {
      yield* sleep(1000);
      return "cached profile";
    },

    function* fetchNetwork() {
      yield* sleep(6000);
      return "fresh profile";
    },
  ]);

  return profile;
}
loadProfile 调用 race(...),启动 readCache 和 fetchNetwork。
readCache 胜出;race(...) 先取消 fetchNetwork,再返回 profile。