【问题标题】:Jquery syncrounous issuesjQuery同步问题
【发布时间】:2011-09-10 23:15:39
【问题描述】:

好的,所以我有一个获取 2 个提要的基本功能。我的问题是,在执行获取两个提要的功能之前,异步运行的功能会跳到警报功能(用于测试)。我确信有一个可行的解决方案,但它让我摸不着头脑。这是脚本。非常感谢您的帮助,谢谢!

function getFeeds(){
    jQuery.getFeed({
        url: 'proxy.php?url='+feed1,
        success: function(feed) {       

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

                var item = feed.items[i];

                s_string += '<div class = \"cont_div a'+i+'\"><h2>'
             /*   + '<a href="'
                + item.link
                + '">'*/
                + item.title
                /*+ '</a>'*/
                + '</h2></div>';

               /* html += '<div class="updated">'
                + item.updated
                + '</div>';

                html += '<div>'
                + item.description
                + '</div>';*/
            }

        }  
    });    
    jQuery.getFeed({
        url: 'proxy.php?url='+feed2,
        success: function(feed) {       

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

                var item = feed.items[i];

                s_string += '<div class = \"cont_div a'+i+'\"><h2>'
             /*   + '<a href="'
                + item.link
                + '">'*/
                + item.title
                /*+ '</a>'*/
                + '</h2></div>';

               /* html += '<div class="updated">'
                + item.updated
                + '</div>';

                html += '<div>'
                + item.description
                + '</div>';*/
            }


       } 
    });    
alert(s_string);
} 

【问题讨论】:

    标签: jquery asynchronous jfeed


    【解决方案1】:

    您必须将这两个请求作为单独的时间线处理:

    1. 为成功指标创建两个变量
    2. 在回调中检查
    3. 哪个请求最后完成将执行您的finished_callback

    代码是这样的:

    function getFeeds(finished_callback) {
        var feed_a_finished = false,
            feed_b_finished = false,
            s_string = "";
    
        jQuery.getFeed( {
            url: 'proxy.php?url='+feed1,
            success: function(feed) {
                /* Your code ... */
                feed_a_finished = true;
                if (feed_a_finished && feed_b_finished) {
                    finished_callback();
                }
            }  
        });
        feed_b_finished = false; 
        jQuery.getFeed({
            url: 'proxy.php?url='+feed2,
            success: function(feed) {       
                /* Your code ... */
                feed_b_finished = true;
                if (feed_a_finished && feed_b_finished) {
                    finished_callback();
                }
            } 
        });
    }
    
    getFeeds(function () {
        alert(s_string);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 2011-07-15
      相关资源
      最近更新 更多