gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 15:11:22 27 4
gpt4 key购买 nike

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com