我一直在尝试使用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”作为数据的数组,然后记录各个标题。
我非常感谢任何帮助或研究方向。就像我说过的那样,我觉得我已经筋疲力尽了所有想法,不知道在哪里再看。
答案 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);
}