多个 if 判断 阻断操作,判断完成再放开
时间: 2023-07-28 09:43:35 浏览: 45
你可以将多个 `if` 判断封装成一个函数,并使用 `async/await` 或者 `Promise` 来等待所有的判断完成,然后再放开阻断。例如:
```
async function handleIfs() {
let isBlocked = true; // 阻断操作
if (condition1) {
// ...
} else if (condition2) {
// ...
} else {
// ...
}
const result = await this.$dialog.confirm({
title: '确认',
message: '确定要执行该操作吗?'
});
if (result) {
// 用户点击了确认按钮
// 放开阻断
isBlocked = false;
} else {
// 用户点击了取消按钮或者关闭了对话框
// 不放开阻断
}
return isBlocked;
}
```
在上面的代码中,首先进行多个 `if` 判断来阻断操作,然后使用 `async/await` 等待用户点击对话框的确认按钮。如果用户点击了确认按钮,则会放开阻断,并将 `isBlocked` 的值设为 `false`;如果用户点击了取消按钮或者关闭了对话框,则不放开阻断,并将 `isBlocked` 的值设为 `true`。最后返回 `isBlocked` 的值。
如果不想使用 `async/await`,也可以使用 `Promise` 来实现。例如:
```
function handleIfs() {
let isBlocked = true; // 阻断操作
if (condition1) {
// ...
} else if (condition2) {
// ...
} else {
// ...
}
this.$dialog.confirm({
title: '确认',
message: '确定要执行该操作吗?'
}).then((result) => {
if (result) {
// 用户点击了确认按钮
// 放开阻断
isBlocked = false;
} else {
// 用户点击了取消按钮或者关闭了对话框
// 不放开阻断
}
});
return new Promise((resolve) => {
setTimeout(() => {
resolve(isBlocked);
}, 1000); // 延迟 1 秒返回结果,确保异步操作完成
});
}
```
在上面的代码中,使用 `Promise` 来等待用户点击对话框的确认按钮,并返回 `isBlocked` 的值。为了确保异步操作完成,使用 `setTimeout` 函数来延迟 1 秒返回结果。在 `then` 方法中,如果用户点击了确认按钮,则会放开阻断,并将 `isBlocked` 的值设为 `false`;如果用户点击了取消按钮或者关闭了对话框,则不放开阻断,并将 `isBlocked` 的值设为 `true`。