以下内容将读取并将许多CSV文件从磁盘导入MongoDB,但如果没有通过resizePhoto()函数(在调整图像大小后包含process.exit),导入所有文件后,NodeJS将不会退出)。
如何在不中断导入所有文件后正确关闭它?如果我添加了process.exit .on end,它将在导入第一个文件后退出。
package general
import scala.collection.mutable.Stack
import scala.collection.immutable.HashMap
object BalanceParen {
def main(args: Array[String]) {
print(isBalanced("()"));
}
def isBalanced(input: String): Boolean = {
val stack = new Stack[Char]
val brace = HashMap('(' -> ')', '[' -> ']', '{' -> '}')
input map (( ch: Char ) => {
if( brace contains ch ) stack push ch
else {
if( brace.isEmpty ) return false
if( brace.get(stack.pop) != ch ) return false
}
})
return stack.isEmpty
}
}
答案 0 :(得分:0)
使用模块 async ,方法并行(https://github.com/caolan/async#parallel)。它可以并行调用您的任务(导入),并在所有任务结束后调用最终的处理程序(退出)。
在你的情况下:
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)in 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 。
祝你好运)