几个活动同时进行,开始结束时间不同。在点击报名时间需检测是否在活动期间。需要异步获取活动时间并跟当前时间进行比较。这里用到了Promise
data(){
return{
activeStart:"",//活动开始时间
activeEnd:"",//活动结束时间
}
},
methods:{
//获取活动时间(方法一)
getActiveTime(event){
return new Promise((resolve, reject) => {
/*后台数据获取过程成功*/
if (response.data.status==1) {
console.log(response.data.data)
this.activeStart = new Date(response.data.data.start_time.replace(/-/g,"/")).getTime();
this.activeEnd = new Date(response.data.data.end_time.replace(/-/g,"/")).getTime();
resolve(this.activeStart,this.activeEnd) //resolve()返回数据
}else{
console.log(response);
}
/*后台获取数据通过resolve()返回数据*/
})
},
//科技辅导员培训一期(方法二)
checkNameOne(){
Promise.all([
this.getActiveTime(101) //101是活动id后台获取时间需要提供的,可忽略
//this.otherMethods() 其他需要执行的方法
]).then(res => {
console.log("其他代码段")
})
},
}
也可以这样:
funOne(){
return new Promise((resolve, reject) => {
//需要执行的代码
resolve(/*需要返回的数据*/)
});
},
funTwo(){
return new Promise((resolve, reject) => {
//需要执行的代码
resolve(/*需要返回的数据*/)
});
},
// 调用
funCall(){
//funOne() 先执行再执行funTwo()
this.funOne().then(val => {
this.funTwo();
});
},
//按照顺序调用多个方法
runFunAll(){
Promise.all([
this.funOne(),
this.funTwo(),
/*
this.funThree(),
this.funOther(),
*/
]).then(res => {
//需要执行的代码
console.log("按顺序从上到下执行方法结束后再执行此处");
})
}