JSON - 等待循环完成,然后将数据传递给回调

时间:2017-03-18 19:01:22

标签: javascript json node.js facebook

我遇到了Node.js的严重问题 我正在开发一个API,使用GraphQL从Facebook数据库中获取数据,然后使用选定的数据发回JSON。

当我通过响应数组迭代(使用for循环)选择有用的数据时,问题出现了,我不知道如何获取所有数据然后将其发送到客户端。 我认为在每次迭代时调用回调都会很好,但它没有解决问题

以下是我的API

的代码

从GraphQL读取数据
FB.api('me / feed',...)返回所有数据的数组 第二个调用返回单个帖子的详细信息,这是最重要的部分(我必须以json格式将这些详细信息的数组返回给客户端)

module.exports = function (start, end, callback) {
  if (start > end) throw 'Start is greater than end';

  FB.api('me/feed', function (res) {
    // Error handling
    if (!res || res.error) {
      throw 'FB error occurred: ' + res.error;
    }
    console.log('FB: OK');

    for (let i = start; i < res.data.length && i != end; i++) {
      FB.api(res.data[i].id + '/attachments', function(post) {
        callback({
          id: res.data[i].id,
          type: post.data[0].type,
          postDesc: res.data[i].message.split('\n\n')[0],
          postUrl: post.data[0].url,
          imagePreviewUrl: post.data[0].media.image.src
        });
      });
    }
 });
}

1 个答案:

答案 0 :(得分:0)

解决了这个问题!
我使用了来自async库的async.each()!