Я пытаюсь разработать синхронный процесс в node.js, и я внедрил метод async.series
, но способ, который я реализовал, не работает, как я ожидаю. Я ожидаю, что вторая функция серии будет работать после завершения первой функции (включая работу цикла). Поскольку s3.getObject
является асинхронной функцией, я немного потерял, как я могу ее реализовать правильно.async - Выполнение действия после цикла завершено в javascript
Возобновление: Я хочу перейти ко второй функции после завершения цикла и функций внутри цикла.
async.series([
function(cback) {
console.log("first function series...");
for (var i = 0; i < jsonUsuariosPerfil.users.length; i++) {
var usuario = jsonUsuariosPerfil.users[i];
var paramsUsers = {
Bucket: 's3.....br/.../users/' + usuario.user,
Key: 'profiles',
};
console.log("loop jsonUsuariosPerfil... " + usuario.user);
s3.getObject(paramsUsers, function(err, data) {
if (err) {
console.log("Error: " + err);
const message = "Error getting user -> " + err;
console.log(message);
callback(message);
} else {
var jsonPerfisUsuario = JSON.parse(data.Body);
var removido = false;
console.log("found object..." + JSON.stringify(data.Body))
for (var i = 0; i < jsonPerfisUsuario.profiles.length; i++) {
var perfil = jsonPerfisUsuario.profiles[i];
if (perfil.profile == id_grupo) {
jsonPerfisUsuario.profiles.splice(i, 1);
removido = true;
break;
}
}
if (removido) {
var paramsPut = {
Bucket: 's3.....br/.../users/' + usuario.user,
Key: 'profiles',
Body: JSON.stringify(jsonPerfisUsuario)
};
console.log("removido, salvando profiles");
s3.putObject(paramsPut, function(err2, data2) {
if (err2) {
console.log("error putting the file:" + err2);
var erro = {
status: "ERROR_SAVING_FILE"
};
generalCallback(null, erro);
} else {
console.log("salvo arquivo dos profiles do usuario");
}
});
}
}
});
}
cback();
},
function(cback) {
console.log("second function series...");
removerGrupoCompleto();
}
], function(err) {
if (err) {
var error = {
status: "ERROR"
};
generalCallback(null, error);
}
});
логарифм, что происходит:
pegou usuarios do perfil...
first function series...
loop jsonUsuariosPerfil... [email protected]
second function series..
Большое спасибо за всю помощь.
И вы не просто обещание цепочки, потому что ...? –
Привет, Джаред, я начинающий разработчик в javascript/node.js, и я не знал, что это такое. Я буду искать больше о «обещаниях», спасибо вам большое! –
Зачем это было отмечено асинхронным ожиданием? – Bergi