[英]Pass variable through asynchronous function
首先,我正在使用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實時控制台中手動執行此操作,則將獲得實際值,例如595.32。
為什么這不能按預期工作? 感謝幫助。
我認為@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);
});
}
其余的代碼是您自己的: 工作JSFIDDLE DEMO
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.