我可以使用get_data()
内的setInterval
功能成功检索数据。但是,当AJAX函数找到新价格时,调用get_data()
函数不会返回新价格,而是继续返回第一次迭代时给出的价格(由两个控制台日志行解释)
如果在间隔内调用get_data()
,我怎样才能正确更新价格?
// Collect price data into array
var interval = 1000;
var arr = [];
function price() {
setInterval(function() {
get_data(function(result) {
arr.push(result);
console.log('updated price: ' + arr[0]); // not updated correctly
});
}, 1000);
function get_data(callback) {
$.ajax({
url: 'http://' + domain + '/site-options/',
dataType: 'json',
cache: fase,
success: function(data) {
var price = data['gbp_price'];
var abs_change = data['gbp_abs_change'];
var p_change = data['gbp_change'];
var market_cap = data['gbp_market_cap'];
var today_max = data['gbp_today_max'];
var today_min = data['gbp_today_min'];
var obj = {
'price' : price,
'abs_change' : abs_change,
'p_change' : p_change,
'market_cap' : market_cap,
'max' : today_max,
'min' : today_min
};
console.log('price: ' + price); // updated correctly
if (callback)
callback(obj);
}
});
}
}
price();
答案 0 :(得分:3)
将数据推送到数组堆栈时,它将一直到最后。然后,您每次都会记录第一个值,这样您就可以避免使用.push() - 并运行:
console.log( result.price );
或:
console.log('updated price: ' + ( arr.length - 1 ) );