以下に示すテーブルスクリプトを読み取るために、パラメーターでクエリを実行し、結果ごとに異なるテーブルの値を結果に追加しようとしています。ただし、azureは非同期であるため、getInvitesの前にrequest.respond()が常に呼び出されます。つまり、結果に招待が追加されることはありません。
function read(query, user, request) {
request.execute({
success: function (results) {
for (var i = 0; i < results.length; i++) {
getInvites(results[i].id, function (invites) {
console.log("Assigning results.invites"); //runs second
results[i].invites = invites;
});
}
console.log("Request Responding"); //runs first
request.respond();
}
});
}
function getInvites(id, cb) {
var InvitesTable = tables.getTable("Invites").where({
"PlanID": id
}).select("UserID", "Attending");
InvitesTable.read({
success: function (results) {
if (cb) cb(results);
}
});
}
Azureで外部ライブラリを使用できないため、これはこれからのフォローアップの質問です。では、どうすれば問題を回避できますか?