如何等待javascript函数响应?

GFb*_*mut 2 javascript facebook function wait

我正在使用facebook API制作网页.
我想在网页上显示用户的朋友.
所以我这样编码

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;
        }
    );
}
Run Code Online (Sandbox Code Playgroud)

问题是这样的:getFriends函数需要一点时间,因此对于获取getFriends响应之前的循环进程.而且我不想在getFriends函数中找到for循环,因为getFriends函数将在许多其他函数中使用.

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

xda*_*azz 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);
Run Code Online (Sandbox Code Playgroud)