run setInterval for only 5 minutes?

Jake picture Jake · Mar 6, 2015 · Viewed 9k times · Source

so I have the following code.

 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);

basically it poles a steam trade offer to see if it has completed or not. However, this actually runs indefinitely, checking every 5 seconds until the program is time. What I was is for it to check every 5 seconds, for 5 minutes, after which it times out.

Any way I could go about doing that?

Answer

Xlander picture Xlander · Mar 6, 2015

You can use setTimeout. For e.g

 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);

And here you clear the interval after 5 minutes (30000 ms)

setTimeout(function(){
    clearInterval(yourIntervalId);
}, 30000);