Javascript 如何正确退出node.js

Javascript 如何正确退出node.js,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,下面将从磁盘读取许多CSV文件并将其导入MongoDB,但如果NodeJS没有通过resizePhoto()函数(在调整图像大小后包含process.exit),则在导入所有文件后不会退出 如何在导入所有文件后使其正确关闭而不中断?如果我添加process.exit.on end,它将在导入第一个文件后退出 var importData = function(fileName) { // Get file from disk. var filePath = path.join(

下面将从磁盘读取许多CSV文件并将其导入MongoDB,但如果NodeJS没有通过resizePhoto()函数(在调整图像大小后包含process.exit),则在导入所有文件后不会退出

如何在导入所有文件后使其正确关闭而不中断?如果我添加process.exit.on end,它将在导入第一个文件后退出

var importData = function(fileName) {

    // Get file from disk.
    var filePath = path.join(folder, fileName);

    // Read and import the CSV file.
    csv.fromPath(filePath, {
        objectMode: true,
        headers: keys
    })
    .on('data', function (data) {

        var Obj = new models[fileName](data);

        models[fileName].find({}).remove().exec();

        Obj.save(function (err, importedObj) {
            if (err) {
                console.log(fileName, err);
            } else if (fileName === 'PHOTOS') {
                resizePhoto(importedObj);
            }
        });

    })
    .on('end', function() {
        console.log(fileName + ': Imported.');
    });
};

module.exports = importData;

使用模块异步,方法并行()。它可以并行调用您的任务(导入),并在所有任务结束后调用最终处理程序(退出)

就你而言:
1)项目中的某个地方

csvImp=require('importData.js');
async.parallel([
    function(done){csvImp(name1,done);},
    function(done){csvImp(name2,done);},
    ...
    function(done){csvImp(nameN,done);}
],
function(err, results){
    process.exit();
});
2)在importData.js中

var importData = function(fileName,done) {
...
.on('end', function() {
    console.log(fileName + ': Imported.');
    done();
});
所以,接下来您需要准备任务列表。差不多

names.forEach(function(n){
    tasks.push(function(done){csvImp(n,done);});
});
并使用任务调用async.parallel


祝你好运)

csv变量来自哪里?调用此变量的代码在哪里?似乎您应该向
importData()
添加一个回调,并在导入完成时调用该回调,然后调用方可以在该回调中执行
过程。exit()
。@aaaidan from fast csv