async,await异步操作同步化执行
需求:打开编辑弹窗时触发一个获取数据的请求a,然后用获取到的数据再触发三个接口b,c,d,之后将最后这三个接口返回的数据和第一个a匹配后渲染到页面。
a接口里面依次执行完b,c接口后,才执行,2222,3333打印
/** 打开表单弹窗 */
function openDialog(clientId?: string) {
dialog.visible = true;
if (clientId) {
dialog.title = "修改";
//a接口
ClientAPI.getClient(clientId).then(async (data) => {
//b接口
await ClientAPI.queryCityAll(data.provinceId as number).then(async (data) => {
await new Promise((resolve, inject) => {
cityAllList.value = data;
console.log(data, "shi");
resolve(1);
});
});
console.log(1111);
//c接口
await ClientAPI.queryCountyAll(data.cityId as number).then(async (data) => {
await new Promise((resolve, inject) => {
countyAllList.value = data;
console.log(data, "qu");
resolve(1);
});
});
console.log(2222);
formData.clientId = data.clientId;
formData.provinceId = data.provinceId;
formData.cityId = data.cityId;
formData.countyId = data.countyId;
formData.otherAddress = data.otherAddress;
console.log(3333);
});
} else {
dialog.title = "新增";
}
}