new Promise((resolve, reject) => {}) 这种结构在JavaScript(不只是Vue.js)中用于创建一个Promise实例,它常用于以下情况:
1.异步操作处理:当需要进行一个异步操作,如网络请求、定时器、文件读写等,并希望以非阻塞方式等待其完成时,可以使用Promise。例如上述代码模拟了一个延迟一秒后完成的任务。
2.错误处理:resolve和reject函数分别用于表示异步操作的成功和失败。在异步任务完成后,根据业务逻辑调用它们,如获取数据成功后调用resolve(data),发生错误时调用reject(error)。
e.g
export function identifyAirportMethod (Searchvalue:string,visible:boolean,airPort:string,location:string){
return new Promise(async (resolve,rejesct) => {
await initBookingApi.identifyAirport(Searchvalue).then((res) => {
if (res.data.code === 200) {
visible = true
airPort = res.data.data.airport
location = res.data.data.location
} else {
message.error({
content: () => res.data.message,
class: 'custom-class',
style: {
marginTop: '20vh'
}
})
}
})
let params = {Searchvalue,visible,airPort,location}
resolve(params)
})
}
在别处调用
const placeOrAirLocationSearch = async (Searchvalue: any) => {
if (Searchvalue) {
let res: any = await toolsApi.identifyAirportMethod(Searchvalue, queryPlacevisible.value, aModalPlace.airPort, aModalPlace.location)
queryPlacevisible.value = res.visible
aModalPlace.airPort = res.airPort
aModalPlace.location = res.location
}
}
3.链式调用与错误链:Promise支持.then和.catch方法进行后续处理,使得异步流程可以有序且易于管理。
可能的使用场景是在某个操作如客户转账重试机制中,模拟1秒后重试完成的动作,然后继续执行接下来的逻辑(比如更新UI、通知服务端或其他依赖此重试结果的操作)。