Promise异步请求变成同步

时间:2022-12-08 11:26:14

最近在写CRMEB OA管理系统的客户列表模块有个需求,保存客户并继续添加合同和保存合同并继续添加付款记录,这个页面跳转简单,但是比较难的是调接口后拿着接口返回的数据要同步到下一个页面,这一部分当时写的时候遇到的问题主要是:保存成功后页面已经跳转到下一个,但是保存接口返的客户id在下一个页面一直打印不出来,打印值为undefined。最后想了一下就是异步和同步的问题。使用Promise完美解决。

1. Promise是一个容器,保存着某个未来才会结束的事件(异步操作)的结果。

Promise异步请求变成同步

2. Promise有三种状态:pending(进行时),fulfilled(成功)和reJect(失败),只有异步操作的结果可以改变promise的状态,一旦promise从pending状态转化为fulfilled和reJect后就不会再改变。

Promise异步请求变成同步

3. 使用:

Const promise  = new Promie(function (resolve,reject){
If(/* 异步操作成功*/){
resolve(value)
} else{
reject(value)
}
})

4. 项目中使用

// 提交
handleConfirm() {
// 请求的时候调用Promise
return new Promise((resolve, reject) => {
this.$refs.form.validate((valid) => {
if (valid) {
const data = {
eid: this.formInfo.id
};
this.clientContractSave(data);
resolve(valid);
}
});
});
},

// 调用的方法的时候
this.$refs.contractInfo.handleConfirm().then(() => {
// 调用接口.then()
}

这样子就会把异步变成同步,在开发中如果还有疑问可以在下方留言。

相关文章