WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Javascript setTimeout (https://www.wn.se/forum/showthread.php?t=1071256)

niklas_SWED 2020-12-04 12:54

Javascript setTimeout
 
Koden jag har hämtar hem färsk data var 10 sekund.

Fungerar klockrent på hemsidan om jag placerar ett element med #bidSymbol var som helst på sidan, men använder jag det i en modal/popup så hämtar den datan och visar resultatet, men uppdateringen var 10 sekund slutar fungera... någon som vet varför?

Koden är följande:

<script type="text/javascript">

var theURL = "https://www.alphavantage.co/query?function=CURRENCY_EXCHANGE_RATE&from_currenc y=USD&to_currency=JPY&apikey=demo";

//setInterval(function(){


$(document).ready(function() {
setTimeout(function(){
//$("#stockIndicator").show();
doAjax(theURL);

/*
$('.ajaxtrigger').click(function() {
$("#stockIndicator").show();
doAjax(theURL);
return false;
});
*/

function numberWithCommas(x) {
return x.toString().replace(/B(?=(?:d{3})+(?!d))/g, ",");
}

function doAjax(url) {

$.ajax({
url: url,
dataType: 'json',
contentType: "application/json",
success: function(data) {

var bidSymbol = data['Realtime Currency Exchange Rate']['8. Bid Price'];
var askSymbol = data['Realtime Currency Exchange Rate']['9. Ask Price'];
//var lastRefreshed = data['Meta Data']['3. Last Refreshed']
//var lastTradePriceOnly = data['Time Series (1min)'][lastRefreshed]['4. close']
//var lastVolume = data['Time Series (1min)'][lastRefreshed]['5. volume']

$('#bidSymbol').html(bidSymbol);
$('#askSymbol').html(askSymbol);
//$('#stockAsk').html(lastTradePriceOnly);
//$('#stockVolume').html(numberWithCommas(lastVolume ));
//$("#stockIndicator").hide();

}
});
}},10000);
});



</script>

niklas_SWED 2020-12-05 21:26

Ser jag snurrat till det... är ju setInterval jag ska använda.

fille123 2021-01-22 15:15

Hade dock anropat setTimeout istället för setInterval, på så sätt har du ingen referns som ligger i bakgrunden och kör.

let timeout = function() {

setTimeout(function() {
doAjaxstuff()
timeout();
},1000)

}

niklas_SWED 2021-01-22 15:27

Citat:

Ursprungligen postat av fille123 (Inlägg 20532433)
Hade dock anropat setTimeout istället för setInterval, på så sätt har du ingen referns som ligger i bakgrunden och kör.

let timeout = function() {

setTimeout(function() {
doAjaxstuff()
timeout();
},1000)

}

Yes... Jag har dock lagt in när popupen stängs så avslutas även körningen.


Alla tider är GMT +2. Klockan är nu 05:31.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson