与JavaScript的同步

与JavaScript的同步,javascript,jquery,asynchronous,synchronization,Javascript,Jquery,Asynchronous,Synchronization,大家好 我目前在与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].star

大家好

我目前在与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(dMObject)
{
jQuery.getFeed({
url:dMObject.rssLink,
成功:功能(提要){
对于(var i=0;i
因此RSSDropMenuConstructor将构造dMList[i].elem,但问题是“SendReponse”不会等待函数结束


因此,当它刷新时,我收到一个空数组,因为数组尚未初始化…有人知道我如何同步它吗?

将sendReponse()函数放入if语句中。这样,当该块中的其余代码正在执行时,它将执行。

将sendReponse()放入函数。这样,当该块中的其余代码正在执行时,它将执行。

在调用sendResponse()之前,需要等待提要从服务器返回。将对sendResponse()的调用放在回调函数中(即函数(提要){…})


因为AJAX是异步的,所以Javascript将继续执行您的代码,即使对服务器的请求处于挂起状态。另一方面,回调在服务器响应之前不会执行。

在调用sendResponse()之前,您需要等待服务器返回提要。将调用放在sendResponse()上在回调函数中(即函数(feed){…})


因为AJAX是异步的,Javascript将继续执行您的代码,即使对服务器的请求处于挂起状态。另一方面,回调在服务器响应之前不会执行。

您可以发布更多的代码吗?这是函数中的给定代码吗?您如何调用函数?我真的不明白为什么sendResponse可以ll在if语句之外。你是否定期调用它?是的,这是因为,如果我需要刷新或不刷新,在这两种情况下,我都需要发送一个responseIs dmList global?查看第一位的调用代码会有所帮助:)你能再发布一些代码吗?这是函数中给定的代码吗?你是如何调用函数的?我真的不明白为什么sendResponse调用在if语句之外。是否定期调用此函数?是的,这是因为,如果我需要刷新或不刷新,在这两种情况下,我都需要发送一个responseIs dmList global?查看第一位的调用代码会有所帮助:)如果不知道您正在调用什么,就很难进一步提供帮助。如果不知道您还需要什么你打电话来了,很难再帮上忙了。