function delay() { var button = document.getElementsByName('bt'); for (var i = 0; i < button.length; i++) { button[i].addEventListener('click',function () { //this.style.backgroundColor = "red"; //$(this).parent().find('#li').html("l"); showPopup(); var que = document.getElementById('que'); var gymname = $(this).parent().find('#li').text(); var username = $('#username').text(); var daytime = $(this).parent().find('#daytime').text(); //$(this).parent().find('#li').html("l"+gymname+"2"); $(this).parent().remove(); $.ajax({ type : "post", dataType : "json", data:{'daytime':daytime,'gymname':gymname,'username':username}, traditional:true, url : "http://localhost:8080/J2EEtest/delay", error : function(){ //alert("请求失败"); }, success : function(data) { //movie为json数据 //通过$.each遍历json数据 //showData(data); } }); }) } } function showPopup(){ var overlay = document.getElementById("overlay"); overlay.style.display = "block"; } function hidePopup1(){ var overlay = document.getElementById("overlay"); overlay.style.display = "none"; }我想执行shoowPopup函数后让delay函数中止,等到hidePopup1函数执行一次再让delay函数继续执行
时间: 2024-02-22 15:01:30 浏览: 174
常用的延时函数delay()
5星 · 资源好评率100%
您可以使用 JavaScript 中的 Promise 和 async/await 来实现等待一个函数执行完成后再继续执行另外一个函数的需求。下面是一种可能的实现方式:
1. 将 delay 函数改写为一个返回 Promise 对象的函数,以便在其他函数中使用 async/await 语法:
```
function delay() {
return new Promise((resolve, reject) => {
var button = document.getElementsByName('bt');
for (var i = 0; i < button.length; i++) {
button[i].addEventListener('click', function () {
showPopup();
var que = document.getElementById('que');
var gymname = $(this).parent().find('#li').text();
var username = $('#username').text();
var daytime = $(this).parent().find('#daytime').text();
$(this).parent().remove();
$.ajax({
type: "post",
dataType: "json",
data: { 'daytime': daytime, 'gymname': gymname, 'username': username },
traditional: true,
url: "http://localhost:8080/J2EEtest/delay",
error: function () {
reject("请求失败");
},
success: function (data) {
resolve(data);
}
});
})
}
});
}
```
2. 在需要等待 delay 函数执行完成后再执行的地方使用 async/await 语法:
```
async function myFunction() {
showPopup();
await delay();
hidePopup1();
// 这里可以继续执行其他操作
}
```
在上面的代码中,myFunction 函数中的 `await delay()` 表示等待 delay 函数执行完成后再执行下一行代码。在 delay 函数中,当 ajax 请求成功时,使用 `resolve(data)` 语句将 Promise 对象的状态设置为已完成,并返回一个包含 Ajax 响应数据的值给 myFunction 函数。当 ajax 请求失败时,使用 `reject("请求失败")` 将 Promise 对象的状态设置为已拒绝,并返回一个错误信息给 myFunction 函数。
阅读全文