Во-первых, ваш намеченный результат неверен.Вы не можете назвать "item"
отдельные записи массива.Вот исправленный и рабочий пример:
[ {
"id": 1,
"title": 2,
"content": 3,
"source": "flickr"
},
{
"id": 1,
"title": 2,
"content": 3,
"source": "unsplash"
}]
Во-вторых, вы ошибочно принимаете JSON за структуру данных.JSON - это просто текстовая нотация.Итак, давайте сначала посмотрим, как построить подходящий массив данных.
let results = [];
results.push( { id:1, title:2, content:3, source:"flickr" });
results.push( { id:2, title:4, content:6, source:"unsplash" });
А затем с помощью JSON.stringify(results)
кодируем ваш results
в JSON.
Наконец, вы смешиваете асинхронныйвызовы в вашем коде с синхронными вызовами.Вам необходимо сохранить результаты обратного вызова отдельных функций, то есть когда вы действительно получите ответы асинхронно.Кроме того, вам нужно подсчитать ожидающие результаты и вызвать окончательный обратный вызов, когда все будет сделано.
Итак, собрав все части вместе, в надуманном фальшивом примере, мы просто дважды вызываем функции поиска и поэтому делаем обратный вызов, когдадва результата объединены.
function combineObjs(callback) {
let results = [];
function partialResult(obj) {
results.push(obj);
if (results.length=2) callback(results);
};
searchFlickr(searchTerm, searchCount, searchPage, partialResult);
searchUnsplash(searchTerm, searchCount, searchPage,partialResult);
}
combineObjs( function(results) { console.log(JSON.stringify(results)) });