这个是函数//比较日期大小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"))输出结果
1 回答
慕慕森
TA贡献1856条经验 获得超17个赞
如楼上所说,checkValidity本身并没有return
语句,所以它的返回值当然是undefined。你的return只是checkValidity里传入API.validity
方法的匿名函数的返回。
由于API.validity
是个异步函数,直接在API.validity
逻辑后面加上return result
会在result还没有赋值之前就先返回了。要想使checkValidity按照里层函数的结果返回,简单点的改造要涉及API.validity
本身的返回值,如果它现在的内容是:
API.validity = function (fn, ob) { fn() ... }
那就要改成:
API.validity = function (fn, ob) { return fn() ... }
checkValidity里的修改:
Vue.prototype.checkValidity = function(type){ return API.validity(...) }
let result
的定义放在匿名参数函数里,其他不变。
函数的返回只能用在它本身上,不可能定义在内层函数的返回去代表外层函数的返回,有多少层函数就要有多少层返回。也正是由于这个原因,语言标准里增加了async和await语句,来用同步写法获取异步函数的执行结果
- 1 回答
- 0 关注
- 1774 浏览
添加回答
举报
0/150
提交
取消