有没有人能给我一个建议,如何给这个函数计时:我正在尝试执行:
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)
});
}
}
}像这样:
setTimeout(function(){connector.sendRequest(request, function() {var xhr = this; game.instance.handleDealResult(hand, xhr) });}, i*200);但是到目前为止还没有成功..请帮助:)
附注:我试着传递,var that = this,并将其添加到timeout,dosent work :(
已尝试:
var that = this;
setTimeout(function(){
connector.sendRequest(request, function() {
var xhr = that;
game.instance.handleDealResult(hand, xhr) });
}, i*200, that);没有工作,只是使回调崩溃:(
发布于 2014-12-12 05:17:30
如果你只想对多个请求进行排序,你可以这样做,只在前一个请求完成时才开始下一个请求,并保留一个计数器来记录你已经完成的次数:
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()延迟:
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();
}https://stackoverflow.com/questions/27432330
复制相似问题