我是一名新手,对JS/Node.js不太熟悉,如果我的问题不够明确,请多包涵。
基本上,如果我有两个异步函数,
async function init() {...}
async function main() {...}
如何确保在init()完成其异步请求后调用main()函数?
具体而言,我想利用模块https://www.npmjs.com/package/hot-import。在该模块的页面上,有一个示例代码:
async function main() {
const MODULE_CODE_42 = 'module.exports = () => 42'
const MODULE_CODE_17 = 'module.exports.default = () => 17'
const MODULE_FILE = path.join(__dirname, 't.js')
fs.writeFileSync(MODULE_FILE, MODULE_CODE_42)
const hotMod = await hotImport(MODULE_FILE)
. . .
样例代码本身可以正常工作,但是当我将其放入事件回调函数中时,问题开始出现——它可以在第一次事件触发时工作,但在第二次时却无法正常运行。
我认为问题不在于常量
hotMod
,而是async
函数中的await hotImport引起了问题。因此,我尝试将hotMod
定义为全局变量,并在main()
被调用之前的async init()
函数中执行hotMod = await hotImport(MODULE_FILE)
。但是,由于我对JS/nodejs还很陌生,迄今为止我还没有做到这一点。请帮忙解决,谢谢。
main
,对吧?请更详细地告诉我们当你将某些内容放入事件处理程序时具体会遇到什么问题,并发布一个带有未工作代码的 [mcve]。 - BergihotImport()
的代码,因为如果它没有返回一个与完成时间相关联的promise,那么await
将无法实现你想要的效果。 - jfriend00