【问题标题】:How to wait for a async function while running via shell in nodejs如何在nodejs中通过shell运行时等待异步函数
【发布时间】:2019-06-28 02:37:20
【问题描述】:

我有一个文件

demo.js

使用这样的函数等待从数据库中获取数据

exports.findNames = async () => {
  const names= await Student.find();
  console.log('Names:', names);
  return names;
};

所以,当我通过 shell/命令行测试这个函数时,它不等待函数完成。

像这样测试

node ./demo findNames

注意:学生是模特, 从另一个文件发送的响应,这就是为什么不在这里。它不是中间件。 Mongoose 用作 db 工具

【问题讨论】:

  • 你的演示 js 代码是什么?
  • 它是一个简单的 nodejs 文件,用于使用 mongoose 从 db 获取学生详细信息。

标签: node.js command-line async-await


【解决方案1】:

您需要await.then demo.js 中的函数。举个例子吧:

names.js

exports.findNames = async () => {
    const names= await new Promise((res,rej)=>{
        setTimeout(()=>{
            res([1,2,3])
        }, 100);
    });
    console.log('Names:', names);
};

demo.js

const name = require('./names');
(async ()=>{
    await name.findNames();
})();

输出

$ node demo.js
Names: [ 1, 2, 3 ]

【讨论】:

  • 您的 demo.js 代码有问题。请在此处发布,因为此示例有效。
  • 用相关信息更新了代码。 res 从另一个文件发送,这就是为什么不在这里。而且它不是中间件。
  • 你需要像我的demo.js这样的驱动函数来调用你的findNames函数
猜你喜欢
  • 2020-09-23
  • 2020-01-09
  • 2020-06-03
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-27
  • 2019-12-30
相关资源
最近更新 更多