使用从Xray收集的元数据填充数组

时间:2016-09-09 01:08:35

标签: javascript node.js promise x-ray

我一直在尝试使用Xray收集的元数据来填充数组,并且没有取得任何成功。该函数由我的服务器上的API路由调用,并从我的应用程序中获取链接。

我似乎正在努力应对承诺,因为需要时间来刮取元数据,而且我似乎无法让功能等到数据被收集后再继续。也许,我只是不明白Xray是如何工作的?或者也许是承诺?我已经尝试了我能想到的一切,这是最近的尝试(也是最简单的):

  function createCollection() {
    Promise.all(rawLinks.map(function(link) {
      linksArray.push(xray(link, 'title')(function(error, title) {
        console.log(title);
        return title;
      }))
    }))
    .then(linksArray => {
      console.log(linksArray);
    });
  }

到目前为止,这并不是我尝试过的最强大或最精细的解决方案,但它是最新的解决方案。首先,控制台记录一个带有“undefined”作为数据的数组,然后记录各个标题。

我非常感谢任何帮助或研究方向。就像我说过的那样,我觉得我已经筋疲力尽了所有想法,不知道在哪里再看。

1 个答案:

答案 0 :(得分:0)

想出来,这似乎就是在做伎俩!

  // format links into an array of objects
  var rawLinks = links.split(', ');
  var linksArray = [];

  createCollection();

  function createCollection() {
    rawLinks.map(function(link) {
      var fillMetaPromise = new Promise(
        function(resolve, reject) {
          var test = xray(link, 'title')(function(err, title) {
            var data = { title: title, link: link };
            resolve(data);
          });
        })
        .then(data => {
          processTitle(data.title, data.link);
        });
    });
  }

  function processTitle(title, link) {
    var object = {
      link: link,
      title: title
    };

    linksArray.push(object);
    console.log(linksArray);
  }