Я (плохо) пытаюсь создать простую страницу, которая перемещается между часами + датой, текущей погодой, прогнозом погоды на 7 дней, новостями и событиями календаря. Каждый из этих «пунктов» призван использовать функции.JavaScript-цикл для вызова другой функции каждые 30 секунд
Например, Я создал такие функции, как:
displayTime(); // Time + date using Moment.js
currentWeather(); // Current weather using Forecast.io (AJAX call)
forecastWeather(); // Weekly forecast of the weather (AJAX call)
latestNews(); // Latest headlines from RSS source/s (AJAX call)
calendarEvents(); // Calendar events from iCloud calendars
Все они прекрасно работают, когда я их называю самостоятельно; но в готовом документе jQuery я хочу вызвать функцию clock + date, подождать 30 секунд, а затем вызвать следующую функцию (которая будет текущей погодой). После того, как все функции прошли через цикл, я хотел бы, чтобы цикл возвращался к часам и начинался снова и снова.
Как бы я мог это сделать?
Re-edit: После предложения Chop я хотел бы использовать что-то в следующих строках: в то время как часы обновляются каждую секунду, как и планировалось, функции не переключаются каждые 30 секунд.
jQuery(document).ready(function ($) {
function displayOne(){
displayTime();
setTimeout(displayTwo, 30000);
}
function displayTwo() {
currentWeather();
setTimeout(displayOne, 30000);
}
displayOne();
setInterval(displayTime, 1000);
});
Вы можете использовать 'setTimeout', где вы хотите использовать 'setInterval' и' setInterval', где вы хотите использовать 's etTimeout'. Кроме того, нет необходимости обертывать такие функции. Просто используйте 'setInterval (updateTime, 1000)'. – Witiko
И, возможно, более важно - не определять и не выполнять функцию displayOne одновременно. Если вы сделаете это так, имя 'displayOne' будет видимо только изнутри функции displayOne, а не извне (вы получите' ReferenceError: displayOne не определено'). Определите 'displayOne', а затем вызовите его. То же самое с 'displayTwo'. – Witiko
Witiko, как я могу определить определенные функции перед их вызовом? Не могли бы вы привести мне пример, пожалуйста? –