不用async与await将异步函数改为同步函数
最近做一个项目token校验,发现之前用的插件不能加密之后可以直接解密,一点都不安全。所以换了一个插件,但是遇到了另一个问题。原本的函数是同步函数,现在换了插件之后变为了异步函数。有很多的代码都调用了这个函数,总不能每个调用该函数的地方都加await或者then。
如下:
function sign(token){
return jwt.sign(token)
}
调用的时候为sign('aaa')
而此时代码变为
async function sign(token){
return await jose.sign(token)
}
如果这样的话,其他调用的地方就变为了这两种
await sign('aaaa')
// 或者
sign('aaaa').then(data=>{})
由于考虑到有很多地方都调用了这个函数,总不能所有文件都去修改吧!
这个时候我们可以用deasync来做异步改同步操作。
代码如下:
这里要用到了while死循环,也就是一直循环的去等待异步结果,
而deasync.runLoopOnce()则是等待异步结果,会阻塞主线程的执行。
let deasync