使用 WinJS,我试图向刚刚点击“继续”按钮的用户显示一条消息,表明他们没有回答所提出的问题。这将显示一个带有两个按钮的对话框(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弹出是真的'。我怎样才能让这些东西以正确的顺序执行?