比方说,我有一个导入的异步函数,它返回一个值和一个 bearer
变量,它将值分配给它,如下所示:
const returnBearer = require("returnBearer.js")
let bearer = returnBearer()
// Some other code that keeps executing continuously.
returnBearer.js
导出的函数如下所示:
const returnBearer = () => {
setTimeout(() => { return("ABearerToken") }, 1000)
}
现在,由于上述块下面的代码需要永远连续执行,我需要每 1 秒将 bearer
变量设置为 returnBearer
返回的值,换句话说,重新- 运行函数并重新赋值,不中断其余代码。
我对此进行了一些尝试。我将 bearer
变量设为全局变量,我使用了 eventEmitter
和递归。我也知道 setInterval
,但它不能很好地工作,因为 returnBearer()
中的代码是异步的,它可能会导致问题。然而,其中大多数都有效。但是看起来很乱,读起来很费劲,占用了很多行,虽然有了全局变量超级简单,但是在导入的函数和主代码之间建立了硬编码的关系。
请注意:如果需要,将 setTimeout
更改为 promises 是完全可以接受的。
那么,在您看来,实现这一目标的最快、最简单和最整洁的方法是什么?
答案 0 :(得分:-1)
这看起来像是通过 setTimeout
实现这一点的一种快速、简单和整洁的方式,允许我们连续调用异步函数。
const getBearer = async (i) => {
return `ABearerToken + ${i}`
}
let bearer
let i = 0
const updateBearer = async () => {
bearer = await getBearer(i)
console.log(bearer)
i++
setTimeout(updateBearer, 1000)
}
updateBearer()