Синхронизация с JavaScript - PullRequest
1 голос
/ 13 мая 2011

Sup, ребята!

В настоящее время у меня есть некоторые проблемы с синхронизацией с JavaScript.Это про обновление.Когда он достигает 10 секунд, я обновляю массив.

var curD = new Date();
if((curD.getTime() / 1000) - dMList[i].startTime > dMList[i].refreshTime)
{
    dMList[i].elem = new Array();
    RSSDropMenuConstructor(dMList[i]);
    dMList[i].startTime = curD.getTime() / 1000;
}

sendResponse({ getdropMenuFields: dMList[i] }); // Send the appropiate dropMenu

Функция RSS

function RSSDropMenuConstructor(dMObject)
{
    jQuery.getFeed({
       url: dMObject.rssLink,
       success: function(feed) {

        for(var i = 0; i < feed.items.length && i < dMObject.maxItem; i++) {

            var item = feed.items[i];

            field = new Object();               
            field.name = 'text';
            field.value = item.title;
            dMObject.elem.push(field);

            field = new Object();
            field.name = 'weblink';
            field.value = item.link;
            dMObject.elem.push(field);

            field = new Object();
            field.name = 'icon';
            field.value = 'http://mediacdn.disqus.com/1305270873/images/embed/bullet-feed.png';
            dMObject.elem.push(field);
        }          

        dMList.push(dMObject);
   }
});

Итак, RSSDropMenuConstructor создаст dMList [i] .elem, но проблема в том, что тогда "SendReponse "не ждите конца функции.

Так что же случилось, когда он обновился, я получил пустой массив, потому что массив еще не инициализирован ... У кого-то есть идея, как я могу синхронизировать это

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Вам нужно подождать, пока лента вернется с сервера, прежде чем вызывать sendResponse ().Поместите вызов sendResponse () в функцию обратного вызова (то есть function (feed) {...}).

Поскольку AJAX является асинхронным, Javascript будет продолжать выполнять ваш код, даже когда запроссервер в ожиданииОбратный вызов, с другой стороны, не выполняется, пока сервер не ответит.

0 голосов
/ 13 мая 2011

Поместите функцию sendReponse () в оператор if.Таким образом, он будет выполняться при выполнении остальной части кода внутри этого блока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...