gpt4 book ai didi

javascript - JS同步告警功能

转载 作者:行者123 更新时间:2023-11-29 23:25:22 26 4
gpt4 key购买 nike

找了很久,是时候求助了...

我想做的只是在另一个函数执行完毕后显示一个 alert()。我指的部分是 ajax 调用的 success

jQuery(document).on('click','a.remove_from_cart',function(event){
event.preventDefault();
startWait();
var self = jQuery(this);
jQuery.ajax({
url:ajaxurl,
type:'post',
cache:false,
data:{
action: self.data('action'),
post_id: self.data('id'),
nonce: self.data('nonce')
},
success:function(data){
if (data) {
// some action
}
// please help me here
stopWait().then(alert(data));
}
});
});

startWait()stopWait() 是两个函数,它们只是从 2 个 html 元素中添加/删除类:

function startWait() {
document.getElementById('wait').classList.add('active');
document.body.classList.add('wait');
}
function stopWait() {
var d = jQuery.Deferred();
document.getElementById('wait').classList.remove('active');
document.body.classList.remove('wait');
return d.promise();
}

它们只是显示/隐藏一个带有微调器的叠加层。

ajax 调用的 success 方法中,我想首先 stopWait() 也就是隐藏叠加层,然后提醒一些信息。我试过回调、promises、jQuery deferred,但我不记得还有什么,我只是无法完成这项工作,总是,首先显示 alert() 然后只有在我关闭 alert(data) stopWait() 完成它的工作。为什么?

请你能帮我理解我在这里做错了什么吗?谢谢!

编辑 1: 将 alert() 包装在一个函数中并不能解决问题。现在 stopWait() 被执行,但没有显示警报。请查看代码笔:https://codepen.io/usainicola/pen/GxOzqz

编辑 2: 问题已解决,这里是工作代码笔:https://codepen.io/usainicola/pen/MVORyd

最佳答案

你必须在返回之前解决 promise

function stopWait() {
var d = $.Deferred();
document.getElementById("wait").classList.remove("active");
d.resolve();
return d.promise();
}

请看一下修改后的codepen edited code pen

关于javascript - JS同步告警功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49514523/

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