我们可以暂停jQuery的延迟吗?

时间:2018-12-11 18:39:52

标签: javascript jquery delay

我有一个按钮(标识为ID)设置为显示:无。单击Vimeo“播放”按钮后,此按钮会延迟10秒出现。

单击视频中的“暂停”后是否可以暂停延迟,因此计时器停止并通过再次单击“播放”再次启动计时器?

这是我到目前为止所拥有的(另请参见此fiddle):

import React from 'react';
import {connect} from 'react-redux';
import * as selectors from './selectors';

const Component = ({message}) => (
  <div>
    {message}
  </div>
);

const mapStateToProps = (state, props) => ({
  message: selectors.message(state, props),
});

export default connect(mapStateToProps)(Component);

2 个答案:

答案 0 :(得分:2)

您不能暂停jQuery .delay()。但是,如果您可以间隔一定时间手动执行操作,则可以:

//prep
let
int,
secs = 10,
elapsed = 0
;

//on play, start/resume interval timer - when we get to 10, show button
player.on('play', () => {
    int = setInterval(() => {
        elapsed++;
        if (elapsed == secs) {
            jQuery('#proceed').show();
            clearInterval(int);
        }
    }, 1000);
});

//pause interval timer on pause
player.on('pause', () => {
    clearInterval(int);
});

如果您重新启动视频或将播放头移回0秒,则可能要完全重设间隔。

答案 1 :(得分:0)

不。

  

.delay()方法最适合在排队的jQuery之间进行延迟   效果。因为它是有限的,例如,它没有提供一种方法来   消除延迟-.delay()不能替代JavaScript的本机   setTimeout函数,可能更适合某些用途   案例。

https://api.jquery.com/delay/