首先,我使用的是JQuery。看看:
$(document).ready(function() {
var btcusd = 600;
function getRate() {
$.get("rate.php", function(data) {
var btcArr = JSON.parse(data, true);
btcusd = btcArr["last"];
//This will give me the correct value
console.log(btcusd);
});
}
setInterval(function() {
//This will say 600 every time
console.log(btcusd);
//Update rate for next loop
getRate();
}, 3000);
});
Chrome控制台每3秒钟给我600个。如果我在chrome live控制台中手动执行此操作,我将获得一个真正的值,如595.32。
为什么这不符合预期? 谢谢你的帮助。
答案 0 :(得分:0)
我认为@Tobbe非常重要。您可以做的一件事就是添加console.log( btcArr )
之类的内容,这样可以告诉您是否有任何回报。
我设置了一个不太相似的演示,一旦ajax回调成功更新了值,它就永远不会回到600,这表明在回调中确实会改变值,并且新值在ajax之外可用回调。
我使用的ajax代码是:
function getRate() {
var gafa = "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=100&q=";
var url = gafa + encodeURI('http://news.yahoo.com/rss/sports/')+"&callback=?";
$.getJSON(url, function(data) {
//var btcArr = JSON.parse(data, true);
var xData = data.responseData.feed.entries
//btcusd = btcArr["last"];
btcusd = xData.length;;
//This will give me the correct value
console.log(btcusd);
});
}
其余代码是您的:WORKING JSFIDDLE DEMO