只运行setInterval 5分钟
run setInterval for only 5 minutes?
所以我有以下代码。
setInterval(function(){
steamOfferObj.getOffer({
"tradeOfferId": tradeOfferID["tradeofferid"] // The tradeoffer id
}, function(error, body) {
if (error == null) {
console.log(body);
if (body.response.offer.trade_offer_state == 3) {
return "Offer Accepted"
} else {
//on not accepted
}
}
});
}, 5000);
基本上,它提出了一个蒸汽交易报价,看看它是否已经完成。然而,这实际上是无限期运行的,每5秒检查一次,直到程序完成。我的做法是每5秒检查一次,持续5分钟,然后超时。
有什么办法可以让我这么做吗?
您可以使用setTimeout
。例如
var yourIntervalId = setInterval(function(){
steamOfferObj.getOffer({
"tradeOfferId": tradeOfferID["tradeofferid"] // The tradeoffer id
}, function(error, body) {
if (error == null) {
console.log(body);
if (body.response.offer.trade_offer_state == 3) {
return "Offer Accepted"
} else {
//on not accepted
}
}
});
}, 5000);
在这里,你可以在5分钟(30000毫秒)后清除间隔
setTimeout(function(){
clearInterval(yourIntervalId);
}, 30000);
对于间隔,我想使用这样的东西:
var start = Date.now();
var theInterval = setInterval(function () {
if (Date.now() - start > 300000) {
clearInterval(theInterval);
return;
}
steamOfferObj.getOffer({
"tradeOfferId": tradeOfferID.tradeofferid // The tradeoffer id
}, function (error, body) {
if (error === null) {
console.log(body);
if (body.response.offer.trade_offer_state == 3) {
return "Offer Accepted";
} else {
//on not accepted
}
}
});
}, 5000);
但在这种情况下,我最好使用setTimeout,因为您使用的是异步请求:
var start = Date.now();
function getData() {
if (Date.now() - start > 300000) {
return;
}
steamOfferObj.getOffer({
"tradeOfferId": tradeOfferID.tradeofferid // The tradeoffer id
}, function (error, body) {
setTimeout(getData, 5000);
if (error === null) {
console.log(body);
if (body.response.offer.trade_offer_state == 3) {
return "Offer Accepted";
} else {
//on not accepted
}
}
});
}
getData();
参见1-4
首先,在调用的setInterval之前获取start
时间
第二,保存timer_id
第三,当计时器调用时,获得current
时间
第四,得到时间差,当超过5分钟时,停止计时器。
var start = (new Date()).getTime(); // 1
var timer_id = setInterval(function(){ // 2
var current = (new Date()).getTime(); // 3
if((current - start)/1000 > 5*60) clearInterval(timer_id); // 4
steamOfferObj.getOffer({
"tradeOfferId": tradeOfferID["tradeofferid"] // The tradeoffer id
}, function(error, body) {
if (error == null) {
console.log(body);
if (body.response.offer.trade_offer_state == 3) {
return "Offer Accepted"
} else {
//on not accepted
}
}
});
}, 5000);
将interval分配给变量:var interval=setInterval;在setInterval之前定义当前时间:new Date()。在间隔内检查是否已过5分钟。如果是,请使用:clearInterval(interval)。
var now = new Date();
var intervalId = setInterval(function(){
var currNow = new Date();
if ((currNow-now) / 60000 > 5) {
clearInterval(intervalId );
return;
}
steamOfferObj.getOffer({
"tradeOfferId": tradeOfferID["tradeofferid"] // The tradeoffer id
}, function(error, body) {
if (error == null) {
console.log(body);
if (body.response.offer.trade_offer_state == 3) {
return "Offer Accepted"
} else {
//on not accepted
}
}
});
}, 5000);
相关文章:
- node.js:setInterval()正在跳过调用
- setInterval和clearInterval javascript无法按需工作
- Don'我不明白为什么我的setInterval+jQuery;不起作用
- setInterval游戏循环的范围问题
- JavaScript setInterval problems
- 如何在Javascript中延迟setInterval
- Javascript倒计时计时器倒计时未正确更新秒/分钟
- 如何执行相同的setInterval()
- SetInterval在javascript对象中表现怪异
- 从setInterval方法移动到带有sprite的requestAnimationFrame
- 如何在悬停时暂停setInterval
- 可以't获取setInterval函数以使用javascript中的this.function_name调用另一
- 删除对象时终止setInterval
- 使用setInterval()函数进行图像闪烁
- “;对于“;内部”;setInterval”;
- 如何在 window.setInterval 中每分钟运行一次 getJSON 函数
- 只运行setInterval 5分钟
- JavaScript setInterval使AJAX每X分钟发布一次
- 从下拉菜单中获取小时分钟值,仅在javascript中的setInterval()中进行初始化
- 我有JS函数,每3分钟调用setInterval -我怎么能调用它当页面加载