如何退出JavaScript中的回调循环
我在test.js文件中有一个简单的codesnippet:
[1, 2, 3, 4].forEach(function(e) {
console.log(e);
});
每当我在终端运行node test.js
,我都会得到输出
1
2
3
4
|
但该计划从未真正退出。 我需要手动结束它。 看起来很琐碎,但我无法找出一个合适的方式在终端中退出scrip。
更新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()
也会退出该进程。 任何解决方案
更新2:我想出了解决方案。 在上面的情况下,脚本没有退出,因为连接到mongodb数据库没有关闭。
我通过添加setTimeout(function() { mongoose.connection.close(); }, 60 * 1000);
来完成处理后关闭连接setTimeout(function() { mongoose.connection.close(); }, 60 * 1000);
在行末
如果这是一个看起来是nodejs的问题,那么你使用process.exit()
退出,以便将其添加到最后应该运行的任何函数的末尾。 在你的情况下,你会先关闭猫鼬,并且让母鸡拥有process.exit()作为退出猫鼬的成功处理程序