2012-08-22 36 views
2

我正在使用Facebook API制作网页。
我想在网页上显示用户的朋友。
这样如何等待javascript函数响应?

function showFriends(){ 
    var result = getFriends(); 
    for(var i=0; i<result.length; i++){ 
     //show friends in webpage 
    } 
} 

function getFriends(){ 
    FB.api({ 
    method: 'fql.query', 
    query: 'SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())'}, 
    function(response) { 
    return response; 
     } 
    ); 
} 

问题,所以我的代码是这样的:getFriends功能需要一点时间,所以循环处理得到getFriends的响应之前。而且我不想在getFriends函数中找到循环,因为getFriends函数将用于许多其他函数中。

那么有没有什么解决方案等待函数的响应呢?

+0

为什么不叫有从回调函数循环的功能? – Sednus

+3

这听起来像你需要的是一个回调。 http://recurial.com/programming/understanding-callback-functions-in-javascript/ –

+0

也许把回路放在回调中。 – Rell

回答

5

showFriends函数作为回调函数。

function showFriends(result){ 
    for(var i=0; i<result.length; i++){ 
     //show friends in webpage 
    } 
} 

function getFriends(callback){ 
    FB.api({ 
     method: 'fql.query', 
     query: 'SELECT uid, name, pic_square FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me())' 
    }, 
    callback 
); 
} 

getFriends(showFriends); 
+0

我为什么不这样想?谢谢! – GFbahamut

+0

@GFbahamut如果有效,你应该接受这个答案作为正确的答案。 – nnnn