首个结果
race(...) 返回第一个成功值,并取消剩余工作。
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。