Я пытался заполнить массив метаданными, которые я собираю с помощью Xray, и не имел никакого успеха. Функция вызывается маршрутом API на моем сервере и получает ссылки из моего приложения.Заполнение массива метаданными, собранными из Xray
Я, кажется, борется с обещаниями, так как требуется время, чтобы очистить метаданные, и я не могу заставить функцию ждать, пока данные не будут собраны, прежде чем двигаться дальше. Возможно, я просто не понимаю, как работает 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);
});
}
Это далеко не самый надежный или усовершенствованным решение, которое я пробовал, но это самая последняя , Сначала консоль регистрирует массив с «неопределенным» в качестве данных, затем он регистрирует отдельные заголовки.
Я был бы очень благодарен за любую помощь или руководство в отношении того, что нужно исследовать. Как я уже сказал, мне кажется, что я исчерпал все свои идеи и не знаю, где даже смотреть.
Вы не должны нажимать что-то на 'linksArray' в этом обратном вызове' map', но просто «возвращаете» обещание для одного элемента. – Bergi
Какую библиотеку обещаний вы используете? Вам нужно [promisify] (http://stackoverflow.com/q/22519784/1048572) функцию 'xray'. – Bergi