我有一个生成一些测试数据并将其插入到 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/