标签: settimeout

了解JavaScript计时器线程问题

我开始使用一个实际上可以顺利运行的JavaScript MMORPG.目前,我创建了一个演示来证明我可以移动角色并让他们互相聊天,以及看到彼此在现场移动.

http://set.rentfox.net/

现在Javascript计时器是我没有广泛使用的东西,但据我所知,如果我错了就纠正我,是否同时发生多个setIntervals并不能很好地运行b/c它只是在一个线程上.

让我们说我希望有10个不同的人通过使用带有setInterval的精灵背景定位来对怪物进行火球训练 - 该动画需要10个setIntervals来重新绘制用于精灵背景位置移位的DOM.那不是一辆大马车吗?

我想知道是否有办法绕过这一切,也许使用Canvas,这样动画可以同时发生而不创建事件队列,我不必担心计时器.

希望有意义,如果我需要进一步澄清,请告诉我.

javascript timer javascript-events settimeout setinterval

7
推荐指数
1
解决办法
3194
查看次数

如何知道计时器在javascript中是清除还是超时?

好的,非常简单的问题.我在javascript参加速成课程.

如果我 timer = setTimeout(..., 500)用来设置定时器,然后clearTimeout(timer)清除定时器,定时器的整数值不会改变,所以我的问题是如何知道定时器是超时还是清除?

我想使用if (timer) {...},但显然正整数总是返回true.

javascript settimeout

7
推荐指数
2
解决办法
7624
查看次数

Javascript - setTimeout关闭问题

我正在努力解决下面的代码.我尝试了很多不同的方法,但我最终得到了两个不正确的结果之一.

for(i = 0; i < result.length; i++) {

    var tmpBlockInfo = {
        size: worldTest.data[0].size,
        xStartPixel :  result[i].x * worldTest.data[0].size,
        yStartPixel : result[i].y * worldTest.data[0].size,
        blockType : (Math.random() * 100 > 10) ? 'path' : 'wall'
    }

    var tmpFunc = function(){
        worldTest.fillBlock(tmpBlockInfo, 157, 152, 124,  255)
    };

    var t = setTimeout(function(){
        tmpFunc()
    } , 500 * i);
}
Run Code Online (Sandbox Code Playgroud)

上面代码的问题是tmpBlockInfo总是得到最后的结果[i] .x/result [i] .y.因此,当超时运行函数时,我正在假设它看到了什么结果[i] .x/result [i] .y在循环之后保持开启(而不是将其作为"新"变量传递)

我认为将它放入函数会解决闭包问题,但没有运气.

还尝试过:

for(i = 0; i < result.length; i++) {

    var tmpBlockInfo = {
        size: …
Run Code Online (Sandbox Code Playgroud)

javascript closures for-loop blocking settimeout

7
推荐指数
1
解决办法
2808
查看次数

在Node.js中限制请求

我有一个阵列.我可以用foreach方法循环它.

data.forEach(function (result, i) {

     url = data[i].url;

     request(url);

});
Run Code Online (Sandbox Code Playgroud)

请求函数正在向给定的URL发出http请求.但是,同时提出所有这些请求会导致各种问题.

所以我认为我应该通过引入某种计时器来减慢速度.

但我不知道如何将forach循环与setTimeOut/setInterval结合起来

请注意我在服务器(nodejs)而不是浏览器上执行此操作.

谢谢你的帮助.

javascript throttling settimeout node.js

7
推荐指数
3
解决办法
4366
查看次数

在JavaScript中,如何从其事件函数中访问setTimeout/setInterval调用的id?

如何从其事件函数内部访问setTimeout/setInterval调用的进程id,因为Java线程可能访问自己的线程ID?

var id = setTimeout(function(){
    console.log(id); //Here
}, 1000);
console.log(id);
Run Code Online (Sandbox Code Playgroud)

javascript settimeout setinterval

7
推荐指数
1
解决办法
7735
查看次数

Javascript setTimeout意外输出

我一直在使用在我的应用程序中使用setInterval(fn,delay)函数的脚本,在阅读了setTimeout和JS如何工作后,我遇到了一些奇怪的结果,所以我做了一个测试:这是jsfiddle https:// jsfiddle.净/ jyq46uu1/2 /

和建议的代码:

var limit        = 1000000000;
var intervals    = 0;
var totalTime    = new Date();
var startTime    = new Date();

var uid = setInterval(
    function () {
        // final lap?
        if (intervals == 9) clearInterval(uid);

        for (i = 0; i < limit; i += 1) {
            // just working the CPU
        }
        // reduce the iterations
        limit = limit / 10;   
        intervals += 1;        

        console.log('Interval ' + intervals +' Time elapsed : ' + (new Date() …
Run Code Online (Sandbox Code Playgroud)

javascript timer settimeout

7
推荐指数
1
解决办法
176
查看次数

setTimeout与0ms之后是否需要clearTimeout?

正如我已经了解的那样(这里:https://www.youtube.com/watch?v = 8aGhZQkoFbQ),在某些情况下,调用setTimeout时延迟0ms(因为事件循环)会很有用.

现在,每当我使用时,setTimeout我也会小心地clearTimeout在适当的位置打电话,以确保没有任何东西留在某处,并在我不希望它被执行的地方执行.

所以我的问题是:clearTimeoutsetTimeout0ms 之后打电话是否有必要(有意义吗?)传递的函数会立即附加到回调队列中,因此我认为clearTimeout不会(也不能)执行任何操作.或者clearTimeout甚至可以从回调队列中删除传递的函数(因此在超时到期之后但在函数执行之前)?

第二个问题:即使它没有做任何事情,clearTimeout在这些情况下总是要求"最佳做法" 吗?

javascript settimeout

7
推荐指数
2
解决办法
4549
查看次数

JS setTimeout()替代

就像我在这里解释的那样,我不能再使用window.setTimeout()和任何窗口经典函数,如clearInterval等...); 但我需要调用JS块代码作为异步.

这就是我使用XHR请求的原因.

使用XHR实现window.setTimeout()的智能替代方法的最佳方法是什么?

// Not working :(
setTimeout(function(){ 
  document.getElementById("messageTimer").innerHTML = "Happy New Year ! (old version)";
}, 10);

// with or without jQuery - but XHR
jQuery.ajax({
    url: "/local/url/easy",
    success: function(html, textStatus, jqXHR) {
            // a loop ?
            // timeout done ?
            document.getElementById("messageTimer").innerHTML = "Happy New Year ! (working version)"
 }});
Run Code Online (Sandbox Code Playgroud)

我的小提琴测试:https://jsfiddle.net/mlefree/xzh3w2we/

TKS

javascript xmlhttprequest settimeout

7
推荐指数
1
解决办法
2万
查看次数

Javascript setTimeout立即在React Native中运行

我的问题是setTimeout运行吗?about 5 seconds较早。例如,当我将其设置为时5 seconds,它将立即运行,但是当我在上时15 seconds,它将在10 seconds以后运行。

我什至调查了这个问题:React Native中的setTimeout,但是我仍然无法解决问题

changeNotify() {
    let that = this;
    console.log("before");
    setTimeout(function () {
        console.log("After");
        that.setState({notifyModal: false})
    }, 5000);
}
Run Code Online (Sandbox Code Playgroud)

并在渲染

<Button
   title='change'
   onPress={() => this.setState({notifyModal: true},()=>this.changeNotify())}
/>
Run Code Online (Sandbox Code Playgroud)

javascript settimeout react-native

7
推荐指数
1
解决办法
661
查看次数

setTimeout的回调代码运行速度比没有它时要慢得多

setTimeout在React上使用Javascript中的函数时,我们正在努力解决一个奇怪的问题。
由于在中使用代码setTimeout,因此运行速度要比不使用代码时运行速度慢得多setTimeout

作为比较,该性能导致:

使用setTimeout1391毫秒,
不使用setTimeout15毫秒

在API回调中(例如axios),也会发生setTimeout版本!


下面显示了一个简单的示例代码:
codesandbox

谁能解释发生了什么事?

import React, { useState } from "react";
import ReactDOM from "react-dom";

function App() {
  const [value, setValue] = useState("");
  const [time, setTime] = useState("");

  const startSample = () => {
    const startTimeStamp = new Date().valueOf();
    for (let i = 0; i < 5000; i++) {
      setValue(`test-${i}`);
      // console.log(`test-${i}`);
    }
    const endTimeStamp = new Date().valueOf();
    setTime(`${endTimeStamp - startTimeStamp}ms`);
  }; …
Run Code Online (Sandbox Code Playgroud)

javascript performance settimeout reactjs

7
推荐指数
1
解决办法
76
查看次数