在jQuery中使用回调函数

时间:2018-08-17 11:45:39

标签: javascript jquery function callback

现在,我已经为此花了好几个小时了,对于javascript来说我还很陌生,所以请耐心等待。

我要实现的目标:

  • 在视频播放之前(使用Vimeo api)显示3秒钟的格距

我尝试过的事情:

  • 我尝试使用.setTimeOut,问题是它只会触发一次,因此视频播放不到一秒钟然后停止。
  • .setTimeInterval在我的情况下也不起作用,因为它以一定间隔而不是连续触发。
  • .delay()仅适用于jquery效果(如果我输入错了,请纠正我)

我现在正在尝试的内容;使用回调参数

  • 我正在尝试添加一个回调,以便在执行第一个功能后以delay(3000)触发我的第二个功能(视频开始播放)

我的代码

plot(ROCRperfs[[1]]@x.values, ROCRperfs[[1]]@y.values,
     col = "blue", avg = "vertical", spread.estimate = "stderror",
     show.spread.at = seq(0.1, 0.8, 0.1), plotCI.col = "blue",
     plotCI.lwd = 2, lwd = 2))

我的函数显示.short_preloader div 3秒钟,然后应触发代码的第二部分。

非常感谢您!

维克多

1 个答案:

答案 0 :(得分:1)

fadeOut异步工作。您需要等待它完成,然后调用callback函数:

代替

$('.short_preloader').fadeIn().delay(3000).fadeOut();
callback();

执行此操作:

$('.short_preloader').fadeIn().delay(3000).fadeOut(callback);

请参见下面的示例,该示例的工作原理与您想要的一样:

$('button').click(function() {
  $('.ad').fadeIn().delay(3000).fadeOut(play);
});

function play() {
  $('.video').show();
  console.log('playing video');
}
.ad, .video {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<button>Start video</button>

<div class="ad">An ad</div>
<div class="video">Video player</div>