连续执行两个甜蜜警报存在问题。该页面显示一个包含车辆列表的页面。通过双击该行,会出现一个甜蜜的警报,询问用户他是否真的想下订单。如果用户单击确定,则将 ajax 请求发送到服务器并执行一些购买汽车的逻辑。然后它返回必要的信息给我,如果一切都成功,那么我在表格中查找我购买的汽车,仓库中的数量列,然后将数字减一。之后,我又调用了 1 个套件警报,告诉用户他已成功下订单。例如,如果仓库中的汽车数量为 0,那么将在套件警报中向用户显示相应的消息。所以当你第一次启动应用程序时,一切都会成功,并且在不重新启动应用程序的情况下进一步尝试,一切正常,但最后一个(成功或不成功)套件警报不会弹出。我尝试将这些警报拉入一个单独的函数并使用 setInterval 调用它们,至少延迟 100 毫秒,然后一切正常。请告诉我这是怎么回事?为什么它不能立即工作?
这是我的代码,没有延迟:
$('tbody').dblclick(function (e) {
swal({
title: 'Оформление заказа',
text: 'Вы уверены что хотите оформить заказ?',
type: "info",
showCancelButton: true
},
function (isConfirm) {
if (isConfirm) {
var carId = $(e.target).closest('tr').attr('id');
$.ajax({
type: "POST",
url: "/Home/CarPurchase",
data: {
"carId": carId
},
success: function (response) {
if (response.result) {
var count = $(".context-menu tbody tr[id=" + response.id + "] td[id=count]");
count.text(count.text() - 1);
swal({
title: "Заказ оформлен",
type: "success"
});
}
},
error: function (xhr) {
swal({
title: xhr.responseText,
type: "warning"
});
}
});
}
}
);
});
$('tbody').dblclick(function (e) {
swal({
title: 'Оформление заказа',
text: 'Вы уверены что хотите оформить заказ?',
type: "info",
showCancelButton: true
},
function (isConfirm) {
if (isConfirm) {
var carId = $(e.target).closest('tr').attr('id');
$.ajax({
type: "POST",
url: "/Home/CarPurchase",
data: {
"carId": carId
},
success: function (response) {
if (response.result) {
var count = $(".context-menu tbody tr[id=" + response.id + "] td[id=count]");
count.text(count.text() - 1);
setTimeout(Success, 100);
}
},
error: function (xhr) {
swal({
title: xhr.responseText,
type: "warning"
});
}
});
}
}
);
});
function Success() {
swal({
title: "Заказ оформлен",
type: "success"
});
}
其中一个假设是,通常情况下,如果一个 swal 在另一个 swal 的回调函数中被调用,那么第一个 swal 可能没有时间完成,内部 swal 的调用也不会随之而来。您可以尝试为第一个添加选项 closeOnConfirm: false 以避免这种情况。