javascript - Nodejs 一个接一个地运行异步函数

标签 javascript node.js promise async-await

我是 JS/nodejs 新手,所以如果我不能提出切中要害的问题,请原谅我。

基本上,如果我有两个异步函数,

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 定义为全局变量,并在 async init() 函数中执行 hotMod = wait hotImport(MODULE_FILE) < em>在调用 main() 之前。但到目前为止我还无法做到这一点,因为我对 JS/nodejs 还很陌生。

请帮忙。谢谢。

最佳答案

使用异步等待

async function myFlow(){
.....
await init();
main();
....
}

在上面的代码中,只有当init被resolved()时才会调用main()。 我希望这对您有帮助。

关于javascript - Nodejs 一个接一个地运行异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53898917/

相关文章:

Javascript: document.images[].complete 在 IE 中不工作

node.js - 用 Jest 模拟 nodemailer.createTransport.sendMail

javascript - setTimeout 与 Promise 一起使用时的不明确行为

javascript - 谷歌附近的地方搜索无法正常工作

javascript - 使用 jquery 避免重复

javascript - 使用 ko :if binding knockout 绑定(bind)提供程序预处理器

Node.js、mongo、promise - 将参数传递给 then 函数

node.js - Node mongo-native findAndModify 回调

javascript - 解决 Mongoose 虚拟属性(property)中的 promise ?

javascript - 防止 promise 触发全局 'unhandled rejection' 事件