gpt4 book ai didi

javascript - javascript中如何退出回调循环

转载 作者:行者123 更新时间:2023-12-03 08:15:46 25 4
gpt4 key购买 nike

我在文件 test.js 中有一个简单的代码片段:

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

每当我在终端中运行 node test.js 时,我都会得到输出

    1
2
3
4
|

但是程序永远不会真正退出。我需要手动结束它。这看起来很微不足道,但我无法找到在终端中退出脚本的正确方法。

UPDATE 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() 也会退出进程。有什么解决办法吗?

UPDATE 2:

我找到了解决办法。在上面的情况下,脚本没有退出,因为与 mongodb 数据库的连接没有关闭。

在处理完成后,我使用了一种肮脏的技巧来关闭连接,方法是在末尾添加 setTimeout(function() { mongoose.connection.close(); }, 60 * 1000);该行

最佳答案

如果这是一个 NodeJS 问题,那么您可以使用 process.exit() 退出,这样您就可以将其添加到最后运行的任何函数的末尾。在您的情况下,您将首先关闭 mongoose,然后将 process.exit() 作为 mongoose 退出的成功处理程序

关于javascript - javascript中如何退出回调循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943389/

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