WinJSを使用して、「続行」ボタンを押したばかりのユーザーに、質問に答えていないというメッセージを表示しようとしています。これにより、2 つのボタンを含むダイアログ (Windows.UI.Popups.MessageDialog) が表示され、ユーザーは今すぐ回答する (したがって、回答された質問にとどまる) か、後で回答する (したがって、次の質問に直接進む) かを選択できます。 . Javascript では、通常、ユーザーが選択を行うまで実行を停止する確認ダイアログを使用し、返された値を使用して次の質問を表示するかどうかを決定できます。WinJS では、コードの実行は停止しません。ダイアログを表示する関数は次のとおりです。
function doSillyMessage(message, title) {
var messagedialogpopup = new Windows.UI.Popups.MessageDialog(message, title);
// Add commands and set their CommandIds
messagedialogpopup.commands.append(new Windows.UI.Popups.UICommand("Answer now", null, 1));
messagedialogpopup.commands.append(new Windows.UI.Popups.UICommand("Answer later", null, 2));
// Set the command that will be invoked by default
messagedialogpopup.defaultCommandIndex = 0;
// Show the message dialog
messagedialogpopup.showAsync().done(function (command) {
if (command) {
if (command.id == 1) {
console.log('proceed in popup is false');
proceed = false;
}
else if (command.id == 2) {
console.log('proceed in popup is true');
proceed = true;
}
}
});
}
問題は、doSillyMessage が呼び出された時点で、コードが待機せず、'proceed' 変数の現在の値が何であれ続行することです。たとえば、doSillyMessage が呼び出された時点で「proceed」の値が false の場合、doSillyMessage が呼び出された後も false になり、(適切な場合) 後でのみ true に変更され、コンソールに「proceed in」と表示されます。ポップアップは真です。これを正しい順序で実行するにはどうすればよいですか?