質問に対する非同期呼び出しの処理に少し苦労していますが、どのように適切な順序で応答を得ることができますか。私は、ユーザーの配列を持っているnode.jsのクエリでの非同期呼び出しの処理
が、それは私がユーザーや、電子メールなど、異なるテーブルでその詳細を挿入されて何をしたいのかJSONオブジェクトのペイロードを、持っている、などの写真は以下の私の擬似コードスニペットです
var jsonObj = {};
var jsonArray = [];
for (var i = 0; i < userArray.length; i++) {
var userJSON = userArray[i];
if (typeof userJSONJSON.list_of_emails != 'undefined') {
conn.query('insert into user_tble set ?', userJSON, function (err, ins) {
conn.query('insert into user_emails (user_id,email_address,) values ?', [globalEmailAddressArray], function (err, ins2) {
conn.query('insert into user_phones (user_id,phone_number) values ?', [globalPhoneNumberArray], function (err, ins3) {
conn.query('insert into user_pictures (user_id,pic_url) values ?', ['http://localhost:300/somepicture'], function (err, ins4) {
jsonObj["result"] = "executed1";
jsonArray.push(jsonObj);
res.status(200).json(arr: jsonArray)
})
})
})
});
} else if (typeof userJSONJSON.list_of_phones != 'undefined') {
conn.query('insert into user_phones (user_id,phone_number) values ?', [globalPhoneNumberArray], function (err, ins3) {
conn.query('insert into user_pictures (user_id,pic_url) values ?', ['http://localhost:300/somepicture'], function (err, ins4) {
jsonObj["result"] = "executed2";
jsonArray.push(jsonObj);
res.status(200).json(arr: jsonArray)
})
})
}
}
私はそれはそれは私に出力を返し などを返すJSONコードを実行する場合、私は
{
"pay_load":[
{
"list_of_emails": [
{"email":"[email protected]"}
],
"last_name": "",
"first_name": "User1"
},
{
"list_of_email_addresses": [
{"email":"[email protected]"}
],
"last_name": "",
"first_name": "User2"
},
{
"list_of_email_addresses": [],
"last_name": "",
"first_name": "User3"
}
]
}
のようなペイロード何かを与える場合
{
arr:[
{
result : "executed2"
}
]
}
私は非同期の性質のために、私はそれが残りの2つをスキップすると思うようなものが欲しいです。
{
arr:[
{
result : "executed1"
},
{
result : "executed1"
},
{
result : "executed2"
}
]
}
要するに、上記の出力を達成するための非同期呼び出しをどのように処理できますか。
[ループ内のJavaScriptのクロージャ - 単純な実施例]の可能な重複(http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example)用 – farhan3