不用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 

你可能感兴趣的:(前端,javascript,开发语言)