Javascript 延迟后面的线路

Javascript 延迟后面的线路,javascript,Javascript,我试图延迟执行后续行,例如: //block of code if (//some condition) { delay(1000) } //block of code 我该怎么做?我尝试使用而循环如下: var del = 0 setTimeOut(function(){del = 1}, 1000) while (del === 0) {console.log("waiting for 1 second");} 但它导致浏览器崩溃。 那么,有没有一个语句、方法或函数能够以干净的

我试图延迟执行后续行,例如:

//block of code

if (//some condition) {
   delay(1000)
}

//block of code
我该怎么做?我尝试使用
循环如下:

var del = 0
setTimeOut(function(){del = 1}, 1000)
while (del === 0) {console.log("waiting for 1 second");}
但它导致浏览器崩溃。 那么,有没有一个语句、方法或函数能够以干净的方式做到这一点呢

注意:我不想使用
设置超时
调用函数

或者动画中是否存在类似延迟的内容,例如:

$("#editor img").on("mouseenter",slideInTag)
                .delay(1000)
                .on("mouseenter",slideOutTag);

没有办法阻止javascript中的当前线程。

简短回答如果您不想使用settimeout,那么就没有办法了。

您需要使用settimeout。因此,在您的情况下,它将是:

$("#editor img").on("mouseenter", function(){ 
  setTimeout(function(){slideOutTag()},1000)
}
您必须定义一个
slideOutTag
函数,该函数将在“mouseenter”和1秒后调用

如果你想在两者之间有“时间间隔”,你需要每次添加一个函数,正如我在这里所展示的。

基于@Rahul Tripathi answer的评论

设置为变量,并使用该变量而不是

$(selector).on("mouseenter", function(){
    var x = this;
    setTimeOut(function () {slideOutTag(x)}, 1000);
})

不,没有。您必须将
setTimeout
与回调函数一起使用。为什么不想使用
setTimeout
或者像这样的动画中是否存在延迟:是的,您可以将
setTimeout
转换为承诺,但这只是语法上的问题,sugar
jQuery
使用了
setTimeout
(进一步调查)。你没有用更新的内容延迟线程/执行,你只是延迟了一个动画。不一样。正如我在回答中所说,没有办法阻止javascript中的当前线程。我的意思是我可以对动画中的事件使用延迟吗?
你需要使用setTimeOut
OP已经明确提到他不想使用setTimeOutAh,这在第一个版本中没有。好吧,那就祝你好运。@RanaMallah:-答案仍然是否定的(正如RGraham所说,你可以使用诺言,但这会导致语法上的甜点)。顺便问一下,为什么你不想使用setTimeOut?因为使用setTimeOut你不能传递像这样的参数@RanaMallah:-你能详细说明一下
吗,因为那样你就不能传递参数
?@RanaMallah你的参数是假的。完全可以传递参数。@RanaMallah所以,将“this”设置为一个变量,并使用该变量而不是“this”。是的,这就是继续的方法+1.