当前位置:  开发笔记 > 前端 > 正文

嵌套$ .getJSON的范围问题

如何解决《嵌套$.getJSON的范围问题》经验,为你挑选了1个好方法。



1> Great Turtle..:

不要嵌套呼叫.您还可以避免一些内存问题,其中javascript为每个匿名函数维护所有局部变量的副本.通过分别进行两次调用,您也可以一次执行两次调用,而不是按顺序执行.

如果我了解你的目的,这是一个更好的方法.再加上轮询gotA和gotB,你甚至可以为用户做一个漂亮的小"等待A,等待B"通知.

编辑:添加了上一个答案的循环修复.

var gotA, gotB;
var followingA, followingB;
function getCommonFollowers(user1, user2)
{
    gotA = false;
    gotB = false;
    jQuery.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ user1 + '&callback=?', gotFollowersOfA );
    jQuery.getJSON('http://twitter.com/followers/ids.json?screen_name=/…'+ user2 + '&callback=?', gotFollowerOfB );
}
function gotFollowersOfA(data)
{
    followingA = data;
    gotA = true;
    if (gotB) {
        compareFollowersAB();
    }
}
function gotFollowersOfB(data)
{
    followingB = data;
    gotB = true;
    if (gotA) {
        compareFollowersAB();
    }
}
function compareFollowersAB()
{
    f2=followingA; 
    f1=followingB; 
    for(var i=0; i < f1.length; i++) {
        for(var j=0; j < f2.length; j++) {
            if (f1[i] == f2[j]) {
                //console.log("Adding f1[i]");
                common.push(f1[i]);
            }
        }
    }
    $('#content').append(''+common.length+'');
}

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有