直接上代码进行讲解:
function handleTreeSelectClick(parentId) {
caGroupForm.value.parentId = parentId;
selectDeptByParentId(caGroupForm.value).then(response => {
caGroupForm.value.deptId = response;
})
}
const handleEdit = async (index, row) => {
// 执行完之后再延迟调用
await new Promise(resolve => {
setTimeout(resolve, 200); // 延迟0.2秒
});
await handleTreeSelectClick(row.groupId);
};
handleEdit
函数是一个异步函数,它接收两个参数index
和row
。在函数体内部,它首先创建一个 Promise 对象,并使用setTimeout
函数延迟0.2秒后解析该 Promise,这样可以在延迟后执行下一步操作。接着,调用
handleTreeSelectClick
函数,并将row.groupId
作为参数传递进去。因此,
handleEdit
函数的执行流程如下:
- 创建一个延迟 Promise 并等待0.2秒。
- 执行
handleTreeSelectClick(row.groupId)
。- 在
handleTreeSelectClick
函数中,将row.groupId
赋值给caGroupForm.value.parentId
。- 调用
selectDeptByParentId
函数,并传递caGroupForm.value
对象作为参数。- 等待
selectDeptByParentId
函数返回的 Promise 解析。- 在 Promise 解析函数中,将返回的结果赋值给
caGroupForm.value.deptId
。整体来说,
handleEdit
函数执行时会先延迟0.2秒,然后调用handleTreeSelectClick
函数。在handleTreeSelectClick
函数中,会根据传入的parentId
更新表单数据,并根据异步操作的结果更新caGroupForm.value.deptId
。通过使用await
关键字,可以确保在执行handleTreeSelectClick
函数之前和之后的代码都在合适的时机执行,避免出现异步操作的竞态条件和不确定性。