shajara流程图解future 完成
中文

future 完成

一段 routine 等待 future,另一段 routine 稍后完成它。

spawn(receiveSmsCode)settle smsCodewait(smsCode)verifyPhoneNumberpendingsmsCodereceiveSmsCodepending
function* verifyPhoneNumber() {
  const [smsCode, provideSmsCode] = yield* future<string>();

  yield* spawn(function* receiveSmsCode() {
    yield* sleep(1000);
    yield* settle(provideSmsCode, "4921");
  });

  return yield* wait(smsCode);
}
verifyPhoneNumber 停在 wait(smsCode),直到 receiveSmsCode 完成 smsCode。
receiveSmsCode 用收到的验证码完成 smsCode。