现有如下业务场景:

- 姓名必填,电话非必填
- 电话号码输入完成,失焦后需后端检验
- 点击提交,如有输入电话号码,需等待电话号码校验完成后,提交表单
解救方案一
const loading = ref<undefined | Promise<boolean>>();
const onBlurValidate = () => {
loading.value = postValidate()
.then(() => {
return true;
})
.finally(() => (loading.value = undefined));
};
const handleSubmit = () => {
if (loading.value) {
loading.value.then(() => {
loading.value = undefined;
});
} else {
}
};
解救方案二 Promise.resoleve()优化代码
const loading = ref<Promise<void>>(Promise.resolve());
const onBlurValidate = () => {
loading.value = postValidate().finally(() => (loading.value = Promise.resolve()));
};
const handleSubmit = () => {
loading.value.then(() => {
loading.value = Promise.resolve();
});
};