是否可以使用异步调用返回值来显示/隐藏警报



在这被当作一个骗局关闭之前,我已经浏览了论坛上许多没有回答我问题的项目,所以请阅读。

场景:用户单击按钮。javascript应该验证输入日期是否有效。如果无效,则显示一个确认框,以便他们可以继续使用错误的日期TO the SERVER FOR DB insert或update,或者取消并编辑。

要进行日期验证,我需要调用一个web方法。使用ajax调用,因为它是异步的,所以不起作用,因为它不等待webmethod的结果。由于在声明时将变量设置为false;isdateValid";方法总是返回false,并显示确认框,即使日期有效(web方法返回true(。我添加了一个回调函数来处理webmethod调用,但在webmethod返回之前,已经向用户显示了messagebox。我唯一能做到的就是;工作;将其作为同步调用而不是异步调用。有没有办法让它成为";等待";除了使async为false之外?这确实是一个同步的逻辑,但所有论坛帖子都说要避免同步,所以对想法持开放态度。

function buttonClick(){
if (!isDateValid())
//show the confirmation box
}
function isDateValid(){
var isDateValid = false;
//ajax call to webmethod
}

---更详细,尝试了我发现的各种东西。。。仍然不好。

用户点击";张贴";按钮检查日期是否有效,如果无效,显示消息框,他们可以继续张贴或取消

function checkPostConfirmation() {
if (!checkDateValidation())
//show confirmation box
else
//do something different  
//always comes here because it's not "waiting"
}
//this method doesnt actually "wait"
async function checkDateValidation() {
let result = await isChequeDateInvalid();
return result;
}
async function isDateInvalid() {
var isDateValid = false;
var selectedDate = (date from control on the screen)
var result = await $.ajax
({
...typical stuff
async: true,
success: function(msg) {
callback(msg.d);
}
});                
}
function callback(boolResult) {
isDateValid = boolResult;
}
return isDateValid;
}

您可以尝试Javascript async/await,

function buttonClick(){
isDateValid()
.then(result => {
if (!result)
//show the confirmation box
})
.catch(err => //handle error);

}
async function isDateValid(){
var isValid = false;
//ajax call to webmethod with await keyword
isValid = await fetch(url);
return isValid;
}

相关内容

  • 没有找到相关文章

最新更新