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