gpt4 book ai didi

javascript - 我怎样才能访问同步代码中的异步响应?

转载 作者:行者123 更新时间:2023-11-29 17:32:01 25 4
gpt4 key购买 nike

我有一个网页,我需要用户点击保存按钮将表单内容保存回网络服务器。

保存的一部分是检查项目,这可能需要提示用户,允许他们在 javascript 弹出窗口中确认、编辑和重新排序项目。

如果需要提示,我需要能够访问用户的响应,即是否单击了确认或取消按钮,如果单击了取消按钮,则必须停止保存过程,如果单击确认按钮单击保存过程必须继续:

同步行为的伪代码:

function SaveData()
{

if (itemsRequireValidation)
{
if (RESPONSE_CANCEL == ConfirmationDialog.Show()) {
return;
}
}

ProcessConfirmData(ConfirmationDialog.OutputData);

//...Do the rest of the save process
}

鉴于:

  • 确认对话框是一个构建一些 HTML 输出的 Javascript 对象,引入了异步行为,因为在用户单击确认或取消按钮之前我们无法真正继续该过程对话框。

  • 使 Javascript 等待直到用户单击一个或另一个按钮的阻止代码将产生负面行为,可能导致浏览器崩溃或阻止用户单击任一按钮。

    <

我该如何重构它以考虑到对话框本质上是异步的这一事实,但我需要像处理同步一样处理用户交互?

我认为我真的需要从我现在没有看到的另一个 Angular 来看待这个问题。

最佳答案

使用回调。使您的 ConfirmationDialog 允许回调函数作为选项,它可以在用户响应时调用这些函数。

function SaveDate() {

function HandleSave() {
// process rest of save
}
if (itemsRequireValidation)
{
ConfirmationDialog.Show({
RESPONSE_CANCEL: function() {
// cancelled, do nothing
},
RESPONSE_OK: function(output) {
ProcessConfirmData(output);
HandleSave();
}
});
} else {
HandleSave();
}
}

关于javascript - 我怎样才能访问同步代码中的异步响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com