标签: settimeout

setTimeout/clearTimeout问题

我试图让页面在例如之后转到起始页.10秒不活动(用户不点击任何地方).我在其余部分使用jQuery,但我的测试函数中的set/clear是纯javascript.

在我的沮丧中,我最终得到了类似这个功能的东西,我希望我可以在页面上的任何点击时调用.计时器启动正常,但点击时不会重置.如果在前10秒内调用该函数5次,则会发出5次警报...没有clearTimeout ...

function endAndStartTimer() {
    window.clearTimeout(timer);
    var timer;
    //var millisecBeforeRedirect = 10000; 
    timer = window.setTimeout(function(){alert('Hello!');},10000); 
}
Run Code Online (Sandbox Code Playgroud)

任何人都有一些代码可以解决问题吗? - 在任何单击停止时,重置并启动计时器. - 当计时器击中时,例如.10秒做某事.

javascript jquery timer settimeout

94
推荐指数
4
解决办法
18万
查看次数

延迟jquery悬停事件?

我想在jquery中延迟一个悬停事件.当用户将鼠标悬停在链接或标签上时,我正在读取文件.如果用户只是在屏幕上移动鼠标,我不希望立即发生此事件.有没有办法推迟事件的发射?

谢谢.

示例代码:

$(function() {
    $('#container a').hover(function() {
        $('<div id="fileinfo" />').load('ReadTextFileX.aspx',
            {filename:'file.txt'},
            function() {
                $(this).appendTo('#info');
            }
         );
    },
        function() { $('#info').remove(); }
    });
});
Run Code Online (Sandbox Code Playgroud)

更新: (1/14/09) 添加HoverIntent插件后,上面的代码更改为以下代码来实现它.实现起来非常简单.

$(function() {
    hiConfig = {
        sensitivity: 3, // number = sensitivity threshold (must be 1 or higher)
        interval: 200, // number = milliseconds for onMouseOver polling interval
        timeout: 200, // number = milliseconds delay before onMouseOut
        over: function() {
            $('<div id="fileinfo" />').load('ReadTextFileX.aspx', {filename:'file.txt'},
                function() {
                   $(this).appendTo('#info');
                }
             );
        }, // function = onMouseOver …
Run Code Online (Sandbox Code Playgroud)

jquery events mouseevent settimeout

93
推荐指数
4
解决办法
9万
查看次数

React应用程序中的setInterval

我在React仍然相当新,但我一直在慢慢地磨,我遇到了一些我坚持不懈的事情.

我正在尝试在React中构建一个"计时器"组件,说实话,我不知道我是否正确(或有效).在下面我的代码,我设置状态来返回一个对象{ currentCount: 10 },并已与玩弄componentDidMount,componentWillUnmountrender我只能得到状态,以"倒计时",从10到9.

两部分问题:我出错了什么?并且,是否有更有效的方法来使用setTimeout(而不是使用componentDidMount&componentWillUnmount)?

先感谢您.

import React from 'react';

var Clock = React.createClass({

  getInitialState: function() {
    return { currentCount: 10 };
  },

  componentDidMount: function() {
    this.countdown = setInterval(this.timer, 1000);
  },

  componentWillUnmount: function() {
    clearInterval(this.countdown);
  },

  timer: function() {
    this.setState({ currentCount: 10 });
  },

  render: function() {
    var displayCount = this.state.currentCount--;
    return (
      <section>
        {displayCount}
      </section>
    );
  }

});

module.exports = Clock;
Run Code Online (Sandbox Code Playgroud)

javascript state settimeout reactjs

91
推荐指数
5
解决办法
13万
查看次数

找到setTimeout()中剩下的时间?

我正在写一些与我不拥有的库代码交互的Javascript,并且不能(合理地)改变.它创建了Javascript超时,用于在一系列限时问题中显示下一个问题.这不是真正的代码,因为它超出了所有希望.这是图书馆正在做的事情:

....
// setup a timeout to go to the next question based on user-supplied time
var t = questionTime * 1000
test.currentTimeout = setTimeout( showNextQuestion(questions[i+1]), t );
Run Code Online (Sandbox Code Playgroud)

我想questionTime * 1000通过询问创建的计时器在屏幕上放置一个进度条setTimeout.唯一的问题是,似乎没有办法做到这一点.有没有getTimeout我失踪的功能?我能找到的关于Javascript超时的唯一信息仅与创建通过setTimeout( function, time)和删除通过有关clearTimeout( id ).

我正在寻找一个函数,它返回超时触发前剩余的时间,或者调用超时后经过的时间.我的进度条形码如下所示:

var  timeleft = getTimeout( test.currentTimeout ); // I don't know how to do this
var  $bar = $('.control .bar');
while ( timeleft > 1 ) {
    $bar.width(timeleft / test.defaultQuestionTime * 1000);
}
Run Code Online (Sandbox Code Playgroud)

tl; dr: …

javascript timeout settimeout

84
推荐指数
5
解决办法
6万
查看次数

Javascript,setTimeout循环?

所以我正在制作一个音乐程序,需要多个javascript元素与另一个同步.我一直在使用setInterval,它最初工作得非常好但是随着时间的推移,元素逐渐变得不同步,而音乐程序则很糟糕.

我在网上看到setTimeout更准确,你可以用某种方式设置setTimeout循环但是我还没有找到一个通用版本来说明这是如何实现的.有人可以向我展示一个使用setTimeout无限循环的基本示例.

谢谢.或者,如果有办法通过setInterval或其他功能实现更多同步结果,请告诉我.

编辑:

基本上我有一些像这样的功能:

//drums
setInterval(function {
//code for the drums playing goes here
},8000);

//chords
setInterval(function {
//code for the chords playing goes here
},1000);

//bass
setInterval(function {
//code for the bass playing goes here
},500);
Run Code Online (Sandbox Code Playgroud)

它最初工作得非常好,但是在大约一分钟的过程中,声音明显不同步,因为我已经阅读了setInterval,我读过setTimeout可以更加一致地准确.

javascript timing settimeout setinterval

78
推荐指数
6
解决办法
18万
查看次数

如何从setTimeout做出承诺

这不是一个现实世界的问题,我只是想了解如何创造承诺.

我需要了解如何为一个不返回任何内容的函数做出承诺,比如setTimeout.

假设我有:

function async(callback){ 
    setTimeout(function(){
        callback();
    }, 5000);
}

async(function(){
    console.log('async called back');
});
Run Code Online (Sandbox Code Playgroud)

如何创建一个async可以在setTimeout准备好后返回的承诺callback()

我想包装它会带我到某个地方:

function setTimeoutReturnPromise(){

    function promise(){}

    promise.prototype.then = function() {
        console.log('timed out');
    };

    setTimeout(function(){
        return ???
    },2000);


    return promise;
}
Run Code Online (Sandbox Code Playgroud)

但我想不到这一点.

javascript settimeout promise

77
推荐指数
4
解决办法
7万
查看次数

如何在jQuery .each()的每次迭代之间添加暂停?

我正在抓取一个jQuery对象数组,然后通过.each()修改数组中的每个单独的jquery.

在这种情况下,我更新了类名以触发-webkit-transition-property以利用css转换.

我想在每次css转换开始之前暂停一下.我正在使用以下内容,但每次更新之间没有延迟.相反,它们似乎都在立即更新.

function positionCards() {
  $cards = $('#gameboard .card');
  $cards.each(function() {
      setTimeout( function(){ addPositioningClass($(this)); }, 500 )
  });
}

function addPositioningClasses($card){
  $card
    .addClass('position')
}
Run Code Online (Sandbox Code Playgroud)

我希望setTimeout可以解决这个问题,但它似乎没有起作用.有没有办法在每个对象的每个CLASS名称更新之前完成暂停?

each jquery settimeout

73
推荐指数
3
解决办法
8万
查看次数

我可以看看计时器是否仍在运行吗?

这里简单的问题是我似乎无法找到答案:一旦setTimeout确定了,有没有办法看看它是否仍然,好吧,设置?

if (!Timer)
{
    Timer = setTimeout(DoThis,60000);
}
Run Code Online (Sandbox Code Playgroud)

从我所知,当你clearTimeout,变量保持在它的最后一个值.一个console.log我只是看着显示Timer为"12",不管是否设置了超时或清除.我是否也必须将变量置零,或者使用其他变量作为布尔说法,是的,我已设置此计时器?当然有一种方法可以检查超时是否仍在运行......对吗?我不需要知道剩下多长时间,只是它还在运行.

javascript settimeout

63
推荐指数
4
解决办法
8万
查看次数

React Native中的setTimeout

我正在尝试为React Native内置的iOS应用加载启动画面.我试图通过类状态,然后一个setTimeout函数来完成这个,如下所示:

class CowtanApp extends Component {
  constructor(props){
    super(props);
    this.state = {
      timePassed: false
    };
  }

  render() {
    setTimeout(function(){this.setState({timePassed: true})}, 1000);
    if (!this.state.timePassed){
      return <LoadingPage/>;
    }else{
      return (
        <NavigatorIOS
          style = {styles.container}
          initialRoute = {{
            component: LoginPage,
            title: 'Sign In',
          }}/>
      );
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

加载页面工作一秒钟,然后我想当setTimeout尝试将状态更改为true时,我的程序崩溃:'undefined不是对象(评估this.setState)'.我已经花了几个小时,有关如何修复的想法?

javascript settimeout ios react-native

63
推荐指数
7
解决办法
10万
查看次数

为什么我使用setTimeout时会立即执行该方法?

我正在尝试使用setTimeout编写一个简单的代码,并且setTimeout不会等待它所设想的时间并且代码立即执行.我究竟做错了什么?

setTimeout(testfunction(), 2000);
Run Code Online (Sandbox Code Playgroud)

javascript settimeout

60
推荐指数
3
解决办法
3万
查看次数