Jak*_*ake 3 javascript node.js steam
所以我有以下代码.
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);
Run Code Online (Sandbox Code Playgroud)
基本上它是一个蒸汽贸易报价,看看它是否已经完成.但是,这实际上无限期地运行,每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);
Run Code Online (Sandbox Code Playgroud)
在这里你清除5分钟后的间隔(30000毫秒)
setTimeout(function(){
clearInterval(yourIntervalId);
}, 30000);
Run Code Online (Sandbox Code Playgroud)
间隔一段时间我会使用这样的东西:
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);
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,我最好使用 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();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4348 次 |
最近记录: |