私はnode.jsで同期プロセスを開発しようとしていますが、async.series
メソッドを実装しましたが、実装した方法が期待通りに機能していません。私は、最初の関数が終了した後で、一連の2番目の関数が動作することを期待しています(ループの動作を含む)。 s3.getObject
は非同期関数なので、どうやって正しく実装できますか?async - javascriptでループ完了後にアクションを実行
再開:ループとループ内の関数を完了した後、2番目の関数に移動します。何が起こっているかの
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..
おかげですべての助けのためにたくさん。世話をするためのポイントの
の各要素に対して非同期操作を行うには
async.each
またはasync.map
(ほとんどの場合)エラーで、あなただけではありませんチェーン化の約束は...? –こんにちはジャレッド、私はjavascript/node.jsの初心者の開発者で、これは何かわかりませんでした。私は "約束"について詳しく調べています。ありがとうございます! –
なぜこのタグは非同期ですか? – Bergi