如何退出JavaScript中的callback循环

我在test.js文件中有一个简单的codesnippet:

[1, 2, 3, 4].forEach(function(e) { console.log(e); }); 

每当我在terminal运行node test.js我得到的输出

 1 2 3 4 | 

但该计划从来没有真正退出。 我需要手动结束它。 看起来很琐碎,但我无法找出一个正确的方式退出docker在terminal。

更新1:

 var mongoose = require('mongoose'); var User = require('../models/users/user'); var UserProfile = require('../models/users/profile'); var config = require('../config'); var logger = require('../libraries/logger'); logger = logger.createLogger(config); var connectionString = config.database.adapter + '://' + config.database.host + ':' + config.database.port + '/' + config.database.name; mongoose.connect(connectionString, {server: {auto_reconnect: true }}); User.find(function(error, users) { users.forEach(function(user) { var data = { email: user.local.email || user.google.email || user.facebook.email || '' }; UserProfile.update({user_id: user._id}, {$set: data}, function (error, record) { if (error) { logger.error(error); } else { logger.info(data); } }); }); 

以上是我正在努力做的工作的代码。 即使不处理脚本,添加process.exit()也会退出该进程。 任何解决scheme

更新2:我想出了解决scheme。 在上面的情况下脚本不存在,因为连接到mongodb数据库没有closures。

我通过添加setTimeout(function() { mongoose.connection.close(); }, 60 * 1000);来使用一个肮脏的黑客来closures连接setTimeout(function() { mongoose.connection.close(); }, 60 * 1000); 在行的末尾

如果这是一个nodejs的问题,那么你可以使用process.exit()退出,这样你就可以将其添加到最后一个函数的末尾。 在你的情况下,你会先closuresmongoose,并且把process.exit()作为退出mongoose的成功处理程序