这个是函数
//比较日期大小
function CompareDate(d1)
{
return ((new Date(d1))) > (new Date());
}
//校验身份
Vue.prototype.checkValidity = function(type){
let result
API.validity(function (res) {
if(res.code == 1){
if(type == "z"){
result = (CompareDate(res.data.zin_expiring))
console.log( "z",result)
return result
}
if(type == "s"){
result = (CompareDate(res.data.sync_expiring))
console.log( "s",result)
return result
}
} else {
console.log(res.msg);
}
},{
user_id: localStorage.getItem('user_id')
})
}
//调用在另一个页面
console.log( "调用的打印",this.checkValidity("z"))
输出结果
如楼上所说,checkValidity本身并没有
return
语句,所以它的返回值当然是undefined。你的return只是checkValidity里传入API.validity
方法的匿名函数的返回。由于
API.validity
是个异步函数,直接在API.validity
逻辑后面加上return result
会在result还没有赋值之前就先返回了。要想使checkValidity按照里层函数的结果返回,简单点的改造要涉及API.validity
本身的返回值,如果它现在的内容是:那就要改成:
checkValidity里的修改:
let result
的定义放在匿名参数函数里,其他不变。函数的返回只能用在它本身上,不可能定义在内层函数的返回去代表外层函数的返回,有多少层函数就要有多少层返回。也正是由于这个原因,语言标准里增加了async和await语句,来用同步写法获取异步函数的执行结果