首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过传递参数计时进入javascript循环

通过传递参数计时进入javascript循环
EN

Stack Overflow用户
提问于 2014-12-12 05:05:16
回答 1查看 30关注 0票数 0

有没有人能给我一个建议,如何给这个函数计时:我正在尝试执行:

代码语言:javascript
运行
复制
GameBaccarat.prototype.playHands = function(requests) {
    for (var i = 0; i < 3; i++) {
        if (game.instance.players[i]) {
            var hand = i;
            game.instance.hand = i;
            this.activeHands += 1;
            var request = requests[i];
            connector.sendRequest(request, function() {
                var xhr = this;
                game.instance.handleDealResult(hand, xhr)
            });
        }
    }
}

像这样:

代码语言:javascript
运行
复制
setTimeout(function(){connector.sendRequest(request, function() {var xhr = this; game.instance.handleDealResult(hand, xhr) });}, i*200);

但是到目前为止还没有成功..请帮助:)

附注:我试着传递,var that = this,并将其添加到timeout,dosent work :(

已尝试:

代码语言:javascript
运行
复制
                var that = this;
                setTimeout(function(){
                connector.sendRequest(request, function() {
                var xhr = that; 
                game.instance.handleDealResult(hand, xhr) });
                }, i*200, that);

没有工作,只是使回调崩溃:(

EN

Stack Overflow用户

发布于 2014-12-12 05:17:30

如果你只想对多个请求进行排序,你可以这样做,只在前一个请求完成时才开始下一个请求,并保留一个计数器来记录你已经完成的次数:

代码语言:javascript
运行
复制
GameBaccarat.prototype.playHands = function(requests) {
    var requestCntr = 0, numRequests = 3;
    var xhr = this;
    function next() {
        if (requestCntr < numRequests && game.instance.players[requestCntr]) {
            game.instance.hand = requestCntr;
            xhr.activeHands += 1;
            connector.sendRequest(requests[requestCntr], function() {
                game.instance.handleDealResult(requestCntr, xhr);
                ++requestCntr;
                next();
            }
        }
    }
    next();
}

如果您想对请求进行排序并在请求之间添加延迟,可以在启动下一个请求时添加setTimeout()延迟:

代码语言:javascript
运行
复制
GameBaccarat.prototype.playHands = function(requests) {
    var requestCntr = 0, numRequests = 3;
    var xhr = this;
    function next() {
        if (requestCntr < numRequests && game.instance.players[requestCntr]) {
            game.instance.hand = requestCntr;
            xhr.activeHands += 1;
            connector.sendRequest(requests[requestCntr], function() {
                game.instance.handleDealResult(requestCntr, xhr);
                ++requestCntr;
                // 1 second delay before next requeset
                setTimeout(next, 1000);    
            }
        }
    }
    next();
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27432330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档