我有这一段js在我的网站上切换图像,但需要一个延迟,当你第二次点击图像。延迟应该是1000ms。点击img_jpg然后img_onclick。jpg就会出现。然后单击img_onclick.jpg图像,在再次显示img.jpg之前应该会有1000ms的延迟。

代码如下:

jQuery(document).ready(function($) {

    $(".toggle-container").hide();
    $(".trigger").toggle(function () {
        $(this).addClass("active");
        $(".trigger").find('img').prop('src', 'http://localhost:8888/images/img_onclick.jpg');
    }, function () {
        $(this).removeClass("active");
        $(".trigger").find('img').prop('src', 'http://localhost:8888/images/img.jpg');
    });
    $(".trigger").click(function () {
        $(this).next(".toggle-container").slideToggle();
    });
});

当前回答

我不是JS领域的专家,但我已经找到了一个使用setTimeout()和递归函数的解决方法,如下所示:

i=0; //you should set i as a global variable
function recFunc() {
    i++;
    if (i == 1) {
        //do job1
    } else if (i == 2) {
        //do job2
    } else if (i == 3) {
        //do job3
    }
    if (i < 3) { //we have 3 distinct jobs. so the condition is (j < 3)
        setTimeout(function () {
            recFunc();
        }, 2000); //replace 2000 with desired delay
    }
}
//
//
//
recfunc(); //start the process

其他回答

如果你需要刷新,这是另一种可能:

setTimeout(function () { 
    $("#jsSegurosProductos").jsGrid("refresh"); 
}, 1000);
setTimeout(function(){


}, 500); 

将代码放在{}中

500 = 0.5秒

2200 = 2.2秒

etc.

对于同步调用,您可以使用下面的方法:

function sleep(milliseconds) {
  var start = new Date().getTime();
  for (var i = 0; i < 1e7; i++) {
    if ((new Date().getTime() - start) > milliseconds){
      break;
    }
  }
}

const delay = (delayInms) => new Promise(resolve => setTimeout(resolve, delayInms)); 等待延迟(100)

ES-6解决方案

下面是一个示例代码,它使用aync/await来获得实际的延迟。

有很多限制,这可能没有用,但只是为了好玩发布在这里。

const delay = (delayInms) => { 返回新的承诺(resolve => setTimeout(resolve, delayInms)); } Const sample = async () => { console.log (' a '); console.log(“等待…”) 让延迟=等待延迟(3000); console.log (b); } 样品();