Я работаю над приложением для потоковой передачи фотографий. По сути, пользователи будут загружать фотографии в папку на моем сервере через FTP, и страница должна обновляться каждый раз, когда новая фотография добавляется без обновления.
Я планирую сделать это с AJAX и методом, предложенным в этой теме: Как проверить, изменилось ли содержимое каталога с помощью PHP? . По сути, я хочу, чтобы на моей странице был цикл, который каждые X секунд делает AJAX-вызов на страницу PHP, которая возвращает MD5-хэш списка каталогов для папки загрузки. Если хэш изменился с момента последнего вызова, другой вызов AJAX получит последний добавленный файл, а jQuery отобразит его на странице.
В ванильном Javascript / jQuery это можно сделать с помощью рекурсивной именованной функции с setTimeout внутри нее. Этот код работает для меня:
function refreshLoop(currentFolderState, refreshRate) {
// Get the new folder state
$.get("../ajax/getFolderState.php", function(data) {
// If it's different than the current state
if ( data !== currentFolderState ) {
// Do something
}
// If it's the same as the current state
else {
// Do nothing
}
// After the refresh rate, try again
setTimeout(function() {
refreshLoop(data, refreshRate);
}, refreshRate);
});
}
// Document Ready
$(function() {
var refreshRate = 5000;
// After refresh rate has passed
setTimeout(function() {
// Get the starting folder state
$.get("../ajax/getFolderState.php", function(data) {
// Kick off the loop
refreshLoop(data, refreshRate);
});
}, refreshRate);
});
Я использую Coffeescript в этом проекте, чтобы узнать, как он работает, так как многие разработчики, похоже, его любят, но я не могу понять, как воспроизвести эту функциональность без использования именованных функций , Может ли кто-нибудь указать мне правильное направление или объяснить, как мне лучше добиться этого эффекта, что легко сделать в Coffeescript?