Во-первых, я не свободно говорю с JavaScript. Я скремблировал эту функцию, чтобы вытащить некоторые статистические данные и применить их как строки html к соответствующим элементам с помощью JSON. Иногда это работает, а иногда и нет.Ошибка JavaScript-функции
AFAIK, функция должна ждать 3 секунды, прежде чем что-либо делать, а затем повторить функцию снова и снова каждые 2 секунды (правильно?).
var userGameStats = setTimeout(function() {
$.getJSON('/id/stats', function (data) {
// Pull the stats
var userWinningBets = data.winningBets,
userLosingBets = data.losingBets,
userTotalBets = data.totalBets,
userStreak = data.streak,
userBestStreak = data.bestStreak;
// Apply stats to elements
$('#stats_won span').text(userWinningBets);
$('#stats_lost span').text(userLosingBets);
$('#stats_total span').text(userTotalBets);
$('#stats_ratio span').text((userTotalBets > 0) ? ((userWinningBets/userTotalBets) * 100).toFixed(1) + '%' : "0%");
$('#stats_streakbest span').text(userBestStreak);
$('#stats_streak span').text(userStreak);
});
userGameStats();
setInterval(userGameStats, 2000);
}, 3000);
Я получаю эту ошибку (в консоли):
Uncaught TypeError: Property 'userGameStats' of object [object Object] is not a function
(anonymous function)
Как решить эту проблему? Есть ли лучший, более правильный способ форматирования синтаксиса?
'userGameStats' будет возвращаемым значением' setTimeout' (который является числом), а не функцией. Также неверно использование 'setInterval'. Всякий раз, когда функция (теоретически) вызывается, вы создаете новый интервал, в результате чего число раз (экспоненциально увеличивающееся) происходит после того, как функция вызывается несколько раз. –