标签: settimeout

使用setTimeout的自定义对象调用方法会丢失范围

我在构建Javascript对象时遇到问题,并使用setTimeout调用该对象中的方法.我尝试了各种变通方法,但总是在循环的第二部分中,范围变为窗口对象而不是我的自定义对象.警告:我是javascript的新手.

我的代码:

$(function() {
 slide1 = Object.create(slideItem);
 slide1.setDivs($('#SpotSlideArea'));
 slide1.loc = 'getSpot';
 slide2 = Object.create(slideItem);
 slide2.setDivs($('#ProgSlideArea'));
 slide2.loc = 'getProg';
 slide2.slide = 1;
 setTimeout('triggerSlide(slide1)', slide1.wait);
 setTimeout('triggerSlide(slide2)', slide2.wait);
});

function triggerSlide(slideObject) {
 slideObject.changeSlide(slideObject);
}

var slideItem = {
 div1: null,
 div2: null,
 slide: 0,
 wait: 15000,
 time: 1500,
 loc: null,
 changeSlide: function(self) {
  this.slide ? curDiv = this.div1:curDiv = this.div2;
  $(curDiv).load(location.pathname + "/" + this.loc, this.slideGo(self));
 },
 setDivs: function(div) {
  var subDivs = $(div).children();
  this.div1 = subDivs[0];
  this.div2 = subDivs[1];
 },
 slideGo: function(self) …
Run Code Online (Sandbox Code Playgroud)

javascript oop scope settimeout

10
推荐指数
1
解决办法
5535
查看次数

Winforms相当于javascript setTimeout

是否有一个简单的解决方案/想法/策略来在WinForms应用程序中创建一个setTimeout等效函数.我主要是一个Web开发人员,但我不确定如何在WinForms应用程序中进行此操作.基本上,我有一个文本框,每次击键后我想运行一个任务来填充一个列表(比如一个自动完成类型的东西),但是如果用户继续输入字符,希望能够取消(例如clearTimeout)...

我唯一的猜测是可能使用BackGroundWorker并使其初始睡眠,当它处于休眠状态时,它可以被取消,如果用户停止输入键并且睡眠期结束,则它会运行任务等

(我不在乎一个例子是C#还是Vb.Net)

.net javascript settimeout winforms

10
推荐指数
5
解决办法
1万
查看次数

在Javascript中轮询本地值的首选方法?

例如,有一个名为animationComplete(来自第三方库)的变量和一个名为的函数happenAfterAnimation:

一个简单的解决方案如下所示:

while(!animationComplete) {
   // Do nothing
}
happenAfterAnimation()
Run Code Online (Sandbox Code Playgroud)

或者像这样的更复杂的解决方案:

function tryHappenAfterAnimation() {
  if(animationComplete) {
    happenAfterAnimation()
  } else {
    setTimeout(tryHappenAfterAnimation, 100)
  }

}
setTimeout(tryHappenAfterAnimation, 100)
Run Code Online (Sandbox Code Playgroud)

第一种解决方案可能有一些开销,第二种解决方案看起来有点脏.

正如future/promise当前版本的Javascript所没有的那样,这里的方式可能有点过分......我只是想知道这种情况是否有优雅轻巧的方式..

有没有人有关于更好的方法处理这个问题的想法?谢谢!

javascript jquery asynchronous settimeout node.js

10
推荐指数
1
解决办法
1107
查看次数

useEffect 中的 setTimeout 函数输出缓存的状态值

这很简单。我正在使用 Redux 来管理我的状态

setTimeout我在函数中有一个函数useEffect

setTimeout超时值为50000ms。

我想要 SetTimeout 处理程序做什么

50000mssetTimeout函数检查是否已收到 api 调用响应后。

如果尚未收到响应,setTimeout函数应重新启动 api 调用,因为调用将被视为超时。

回调处理程序正在做什么

之后50000ms,即使已收到响应,setTimeout 处理程序仍会重新启动 api 调用。

我尝试记录状态的输出,然后它返回缓存的状态,即使状态已传递到函数的依赖项数组useEffect并且应该已更新

进行 api 调用后,testDetails.isUpdatingTestDetails状态设置为false

我尝试了几种逻辑,但没有一个有效

逻辑1

 useEffect(() => {
         //Notice how i check if the testDetails is being updated before initiating the setTimeout callback
        if (testDetails.isUpdatingTestDetails === true) {
         
            setTimeout(() => {
// Inside the settimeout function the same check is also …
Run Code Online (Sandbox Code Playgroud)

settimeout reactjs redux react-redux

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

用事件参数调用Javascript setTimeout函数?

使用setTimeout时拉入事件对象的最佳方法是什么?我正在使用jQuery来处理所有浏览器中事件模型的规范化,但我不确定如何将'e'对象放入checkPos函数中.

我目前的代码:

function MouseDownEvent(e) {
    *snip*
    timeoutID = setTimeout(checkPos(e), 500);
}
function checkPos(e) {
    //function uses e on a timeout of 500ms
    timeoutID = setTimeout( checkPos(e) }, 500);
}
Run Code Online (Sandbox Code Playgroud)

目前该代码工作一次,因为该函数在mousedown事件中被调用,但在用户移动鼠标时从不更新e对象.FF javascript错误控制台还声明它是'一个无用的setTimeout调用(在参数周围缺少引号?)',但是遵循该建议会导致它完全失败.

如何从setTimeout调用中提取'e'事件参数?

编辑:在每500ms重新运行checkPos函数的代码中添加

javascript jquery settimeout

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

在setTimeout中使用JavaScript闭包

我正在使用setTimeout模拟渲染,我来到这样的结构:

var Renderer = new Class (
{
    Implements: Events,

    initialize()
    {
        this.onRender();
    },

    onRender: function()
    {
        // some rendering actions
        setTimeout(this.onRender.bind(this), 20);
    }
});
Run Code Online (Sandbox Code Playgroud)

由于闭包的无限嵌套,该代码是否存在潜在的内存泄漏?或者一切都好吗?我到目前为止唯一的解决方案是将其重写为常规

function Renderer()
{
    var onRender = function()
    {
        // rendering
        setTimeout(onRender, 20);
    };
    onRender();
};
Run Code Online (Sandbox Code Playgroud)

但我不想失去Mootools活动和课程.由于某些原因,我不能使用"singleton"(如window.renderer = new Renderer();)

javascript mootools closures settimeout

9
推荐指数
1
解决办法
5202
查看次数

定时器触发的angularJS性能问题

我正在构建一个非常巨大的角应用程序,我的问题是内存泄漏导致页面冻结.单击一个按钮,我的应用程序打开一个弹出窗口,(在自定义指令的帮助下)动态附加此弹出窗口的内容,并使用本地文件中的$ http调用弹出窗口.它工作正常.

我已经使用了chrome开发人员工具来根据时间线给我的提出以下内容:

如您所见,在渲染发生之前,计时器会被触发很长时间.当用户多次执行此操作时,此时间越来越多(关闭弹出窗口并再次重新打开).除非他去其他页面然后回来或刷新页面.所以....我怎么能摧毁所有以前的计时器或者必须采取什么措施来收集垃圾.或者它是否需要做其他事情. 在此输入图像描述

javascript developer-tools settimeout angularjs angular-directive

9
推荐指数
1
解决办法
3208
查看次数

在html上的Javascript settimeouts重击鼹鼠游戏

我一直试图创建一个html打击鼹鼠游戏,其中一个痣以一定的间隔添加一个类,然后触发另一个超时功能给用户3秒钟点击鼹鼠并在检查前删除该类进行确定该痣是否仍具有附着的类别.

这是我的游戏的一个方面:https://jsfiddle.net/gko9puqf/1/ 以下是我的javascript.

var score = 0;
var numberofpipes = 9;
var lastnum = 0;
var intervalseconds;
var interval;
var haslost = false;
var checkpipetimer;
var timeoutfunc;
var timeoutinit;
var timers = [];
var burstingpipes = {};
var timeoutinit = setTimeout(startaburst, 3000);
$('#scorecontainer').text(score);
//starts a bursting pipe
function startaburst() {
  clearTimeout(timeoutinit);
  if (score < 10) {
    intervalseconds = 2;
  } else if (score >= 10 && score < 25) {
    intervalseconds = 1.5;
  } else if (score >= …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery settimeout

9
推荐指数
1
解决办法
333
查看次数

简单的倒数计时器打字稿

我的构造函数中有以下代码:

constructor(){
for (let i = 0; i < 90; i++) {
  setTimeout(() => {
    this.counter = this.counter - 1;
  }, 1000)
 }
}
Run Code Online (Sandbox Code Playgroud)

我真正想要的是显示一个倒计时 90 秒的数字。现在它立即从 90 倒计时到 0

settimeout countdown typescript

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

无法理解 JS 中这个 for 循环的输出

我已经明白为什么这段代码的输出应该是3 3 3.

for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
Run Code Online (Sandbox Code Playgroud)

但我无法理解为什么这段代码的输出是0 1 2.

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
Run Code Online (Sandbox Code Playgroud)

我希望第二个循环的输出更加清晰for

javascript for-loop var let settimeout

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