标签: settimeout

覆盖javascript中的全局函数

我试图将自己的错误处理添加到JavaScript setTimeout函数.以下代码在chrome中工作正常:

var oldSetTimeout = window.setTimeout;
window.setTimeout = function setTimeout(func, delay) {
    var args = Array.prototype.slice.call(arguments, 0);
    args[0] = function timeoutFunction() {
        var timeoutArgs = Array.prototype.slice.call(arguments, 0);
        try {
            func.apply(this,timeoutArgs);
        }
        catch (exception) {
            //Do Error Handling
        }
    }
    return oldSetTimeout.apply(this, args);
}
Run Code Online (Sandbox Code Playgroud)

但在IE7中它变成了一个递归函数.由于某种原因oldSetTimeout设置为新功能.

有什么建议?



旁注:是的,我需要这样做.我正在使用一堆第三方库,所有这些库都不能很好地处理setTimeout,所以我不能只是将调用更改为setTimeout.

javascript overriding global settimeout

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

如何在node.js中cleartimeout

您好我们正在开发node.js,socket.io和redis中的应用程序.

我们有这个程序:

exports.processRequest = function (request,result) {
     var self = this;
     var timerknock;
     switch(request._command) {
    case 'some command': // user login with username 
            // some statement 
            timerknock=setTimeout(function() {
                //some  statemetn
            },20*1000);
        case 'other command ':
            // some statement    
            clearTimeout(timerknock);
      }
};
Run Code Online (Sandbox Code Playgroud)

但当它取消定时器时,当其他命令执行时它没有被取消,我该怎么办才能取消定时器?

settimeout node.js socket.io

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

如何将'this'传递给setTimeout回调

CSS

.item {
  display: none;
}
Run Code Online (Sandbox Code Playgroud)

HTML

<div>
  <div class="item">machin</div>
  <div class="item">chose</div>
  <div class="item">chouette</div>
  <div class="item">prout</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我正在使用jQuery,我想让每个都.item出现在一个随机的小计时器之后:

JavaScript的

$('.item').each(function () {
  itm = $(this);
  setTimeout(function () {
    itm.fadeIn(1000);
  }, Math.floor(Math.random() * 1000));
})
Run Code Online (Sandbox Code Playgroud)

这里itm将始终包含最后一项,因为在所有赋值后评估函数.
我不能使用第3个参数,setTimeout()因为它不适用于IE.
这不是建议使用setTimeout()EVAL出于安全原因的方法.

那么我如何通过访问我的对象setTimeout()


编辑

我知道这个问题已经发布了.
但我认为它与each()上下文略有一致.
现在有人完全改变了我的问题的标题,原来就是'setTimeout() - jQuery.each()这个对象参数'

javascript jquery scope settimeout

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

我应该在覆盖超时变量之前调用clearTimeout吗?

刚在我们的应用程序中找到了这段代码片段.我想知道第一行是否是多余的 - 如果它被立即覆盖,是否需要在变量上调用clearTimeout?还是有一些我应该注意的情况?

function Countdown() {
    clearTimeout(sessionTimeoutHandle);
    sessionTimeoutHandle = setTimeout(function () { countdownHandler() }, MILLISECONDS);
}
Run Code Online (Sandbox Code Playgroud)

我的预感是"是的,你需要调用clearTimeout"因为我无法想象为什么只有将timeout变量设置为null才能存在clearTimeout方法.

我想更好的问题是:

var timeoutHandler = setTimeout(countdownHandler, MILLISECONDS);
timeoutHandler = setTimeout(countdownHandler, MILLISECONDS);
Run Code Online (Sandbox Code Playgroud)

我现在有两个功能等待大约MILLISECONDS,或只有一个吗?

javascript settimeout

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

等待功能直到用户停止输入

我有用户在打字时进行ajax调用.问题是它会对每个字母进行调用,所以我设置了这样的超时:

$(input).live('keyup', function(e){

setTimeout(function(){ 

var xx = $(input).val();
doSearch(xx); 

}, 400); 

}); 
Run Code Online (Sandbox Code Playgroud)

它确实等待400ms,然后为每个keyup执行.如何更改此选项,以便在最后输入的字母后约400ms内"acax"调用一次?

(我过去使用'延迟',但这对我的脚本根本不起作用......)

jquery events delay settimeout

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

Javascript:setTimeout和界面冻结

上下文

我有大约10个复杂的图表,每个图表需要5秒才能刷新.如果我在这10个图表上进行循环,则刷新大约需要50秒.在这50秒期间,用户可以移动滚动条.如果移动滚动条,则必须停止刷新,当滚动条停止移动时,再次进行刷新.

我在循环中使用setTimeout函数让界面刷新.算法是:

  • 渲染第一个图
  • setTimeout(渲染第二个图形,200)
  • 渲染第二个图形时,在200ms内渲染第三个图形,依此类推

setTimeout允许我们捕获滚动条事件并清除下一次刷新的时间以避免在移动滚动条之前等待50秒...

问题是它不会随时运行.

以下简单的代码(您可以在这个小提琴中试一试:http://jsfiddle.net/BwNca/5/):

HTML:

<div id="test" style="width: 300px;height:300px; background-color: red;">

</div>
<input type="text" id="value" />
<input type="text" id="value2" />
Run Code Online (Sandbox Code Playgroud)

Javascript:

var i = 0;
var j = 0;
var timeout;
var clicked = false;

// simulate the scrollbar update : each time mouse move is equivalent to a scrollbar move
document.getElementById("test").onmousemove = function() {

    // ignore first move (because onclick send a mousemove event)
    if (clicked) {
        clicked = false; …
Run Code Online (Sandbox Code Playgroud)

javascript settimeout

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

在节点js中设置超时故障

我有一个域异常处理程序(用于夜间测试的包装器).

我的异常处理程序包装器

var domainError = function(func) {

    return function() {
      var d = domain.create().on('error', function(err) {
        console.error(err.stack);
      });

      d.enter();
      try {
        return func.apply(this, arguments);
      }
      catch (err) {
        //do something with the err
      }
      d.exit();
    }
};
Run Code Online (Sandbox Code Playgroud)

我试图设置超时,这样return func.apply(this, arguments);就不会永远.

任何人都可以建议我如何添加超时并使域结束该功能并退出,如果超过超时?

javascript exception-handling settimeout node.js

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

添加延迟到返回promise的javascript方法

我目前正在尝试学习Angular 2,打字稿,承诺等.我为开发人员工具和只返回硬编码数据的服务设置了一个小应用程序.这仅用于测试目的.

我想在服务方法上添加短暂超时来模拟服务器滞后以测试我的一些控件,但是我找不到正确的语法来执行此操作.如何为服务电话添加5秒延迟?

开发者工具服务

@Injectable()
export class DeveloperService {
    getExampleData(): Promise<ExampleItem[]> {
        const examples: ExampleItem[] = [];
        examples.push({ id: 1, name: 'Spaceman Spiff', location: 'Outer Space', age: 12 });
        examples.push({ id: 2, name: 'Stupendous Man', location: 'The City', age: 30.5 });
        examples.push({ id: 3, name: 'Tracer Bullet', location: 'The City', age: 24 });
        examples.push({ id: 4, name: 'Napalm Man', location: 'War Zone', age: 43.333 });
        examples.push({ id: 5, name: 'Adult Calvin', location: 'In the future', age: 54 });

        // TODO: …
Run Code Online (Sandbox Code Playgroud)

timeout settimeout promise typescript angular

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

在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
查看次数

使用golang对每个请求执行上下文超时

我正在尝试处理每个请求的上下文超时.我们有以下服务器结构:

在此输入图像描述

流程概述:

Go Server:基本上,充当[反向代理].2

Auth服务器:检查请求身份验证.

Application Server:核心请求处理逻辑.

现在,如果授权服务器无法在规定的时间内处理请求,那么我想从内存中关闭goroutine.

这是我尝试过的:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
req, _ := http.NewRequest("GET", authorizationServer, nil)
req.Header = r.Header
req.WithContext(ctx)
res, error := client.Do(req)
select {
case <-time.After(10 * time.Second):
    fmt.Println("overslept")
case <-ctx.Done():
    fmt.Println(ctx.Err()) // prints "context deadline exceeded"
}
Run Code Online (Sandbox Code Playgroud)

在此处,如果请求未在规定时间内处理,则上下文将返回" 超出截止日期 ".但它继续处理该请求并在指定时间内返回响应.那么当超过时间时,如何停止请求流(goroutine).

虽然我已经实现了完整的请求需要在60秒内使用此代码进行处理:

var netTransport = &http.Transport{
    Dial: (&net.Dialer{
        Timeout: 60 * time.Second,
    }).Dial,
    TLSHandshakeTimeout: 60 * time.Second,
}
client := &http.Client{
    Timeout:   time.Second * 60,
    Transport: netTransport,
    CheckRedirect: …
Run Code Online (Sandbox Code Playgroud)

httprequest go settimeout goroutine

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