javascript - 从命令行运行异步代码, Node js

标签 javascript node.js

我有一个生成一些测试数据并将其插入到 mongodb 的函数:

'use strict';
const CvFaker = require('./cv-faker');
const mongoose = require('mongoose');
require('../models/cv_model.js');

module.exports.init = function(){
  var cvfaker = new CvFaker();
  cvfaker.genCvs(100);

  mongoose.model('cv').create(cvfaker.cvs, (err, createdCvs) => {
    if(err){
      console.log('something went wrong');
    }

  })
};

我想从命令行执行这段代码:
node -e 'require("./create-mock-db").init()'

该函数执行,但它不等待函数完成,因为它是异步的。如何让它等待功能完成?

这也不起作用:
module.exports.init = function(cb){ ...
..
cb();

node -e 'require("./create-mock-db").init(function(){})'

最佳答案

因为这个答案可能会出现在更多人身上……

// test.js
const request = require('request');
const rp = require('request-promise');

const demo = module.exports.demo = async function() {
  try {
    const res = await rp.post( {
      uri: 'https://httpbin.org/anything',
      body: { hi: 'there', },
    }, function (error, response, body) {
      return error ? error : body;
    } )
    console.log( res )
    return res;
  }
  catch ( e ) {
    console.error( e );
  }
};

像这样调用它:
$ node -e 'require("./test").demo()'

旁注:

it does not wait for the function to complete since it is async



它不是异步的。您可能会调用异步函数,但您没有将它们视为这样,而不是 await荷兰国际集团的任何结果。

关于javascript - 从命令行运行异步代码, Node js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38747364/

相关文章:

javascript - Bacon.js,将流中的每个值延迟 1 秒

javascript - 从 upsert (insertOrUpdate) Sequelize Node.js 获取插入行的 id

node.js - Array中的Upsert和$ inc子文档

javascript - 检测未单击的列表项

javascript - 提交并打开成功消息弹框

javascript - JavaScript 或 IEEE-754 中的舍入怪癖?

javascript - 将不同对齐的 excel 转换为 json

JavaScript 隐式强制转换

node.js - 在 Visual Studio Code 中调试输出 nodejs

Node.js:代理站点如何处理相对 URL?