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";
    },
  ] as const);

  return profile;
}
loadProfile 把 readCache 和 fetchNetwork 启动为相互竞争的并发工作。
race 返回 readCache 的结果,并取消 fetchNetwork。