如下函数怎么让它返回isLogin的状态?
//因为多处地方用到了这个判断登录,所以我想把它单独拿出来
'strict 模式';
function checkLogin() {
var login;
await Account.isLogin().then(function (isLogin) { //Account.isLogin() 一个promise
login = isLogin; //boolean
});
return login; //实际情况是=> undefined,原因是异步,所以上面之后加上了await
}
//这里await报错了 ‘Uncaught Error: Module build failed: SyntaxError: await is a reserved word’
这个函数如何能改造下实现如下效果:
//在别的地方用
if(checkLogin()){
//登录后的。。。。。
}
由于异步处理机制和同步处理机制不同,异步函数不能改为同步执行(在别的语言中可以通过
join
来实现同步,目前 JavaScript 不可以),所以对 JavaScript 异步函数的调用,不管采用何种方式(回调、Promise、await 等)都需要调用者本身支持异步处理。用 async/await 可以让代码写/看起来比较像同步代码,但仍然需要对外部调用者进行改造,必须声明为 async 函数,如
如果外部函数不能改造,考虑用
Promise.then
其实这种方式也可以改 await 的,加一个 async 封装即可
参阅: