如何在返回main函数之前等待嵌套异步函数的结果

时间:2014-11-15 05:53:02

标签: javascript cordova asynchronous ionic-framework higher-order-functions

Apolgies如果我的问题是基本的 - 我花了很多时间试图理解回调来解决这个问题,但我被困了!我还审查了其他类似的问题,但不能将我学到的东西应用于此。

我正在尝试修改标准的Ionic教程。应用程序的此服务部分旨在返回一组朋友数据以填充下拉列表。

在原始样本中,数据以硬编码值手动加载为例。你可以看到它向底部注释。

我的问题是如何让整个函数返回等待我的异步facebook调用的完成,这会带回实际数据来代替虚拟数据。

非常感谢!

约翰

angular.module('starter.services', [])

.factory('Friends', function() {

  function friendsFunction() {

    //Async FB API call to return friends of user
    FB.api('/me/friends', function (response) {

      var fbFriendData = [];

      //Load friends into an array
      for (var i = 0; i < response.data.length; i++) {

        fbFriendData.push({
          id: i,
          fbid: response.data[i].id,
          name: response.data[i].name
      });

      }

      return fbFriendData;

    });

  }

  var friends = friendsFunction();

  //friends = [
  //  {id: 0, name: 'KJ'},
  //  {id: 1, name: 'Your Mum'},
  //  {id: 2, name: 'Nikki B'},
  //  {id: 3, name: 'Jesus'}
  //];

  return {
    all: function() {
      return friends;
    },
    get: function(friendId) {
      // Simple index lookup
      return friends[friendId];
    }
  }

});

0 个答案:

没有答案