Ваша проблема в .filter
l oop. Вы звоните axios.get
, но ничего не делаете с обещанием, которое он возвращает. Функция filter
должна возвращать true
, если объект должен быть сохранен, и false
, если нет. Но он вообще ничего не возвращает (что эквивалентно false
. Вы можете подумать, что оно возвращает clippedBranch
, но это не так.
Я подозреваю, что вы хотите, чтобы filteredByUser
был массивом clippedBranch
объектов, но в конечном итоге он станет пустым массивом.
Следующий код поможет вам в этом:
let diffs = await axios.get("API-Call-To-BB-For-Recent-Branches", {
headers: {
Authorization: `${AUTH}`
}
});
const filteredByUser = [];
// use forEach instead of filter
diffs.data.values.forEach(async element => { // <--- use async to allow await
if (element.target.author.raw.includes(username)) {
if (element.target.repository.full_name.includes("nameOfMasterBranch")) {
const clippedBranch = await axios.get( // <--- wait for the result!
element.target.links.diff.href, {
headers: {
Authorization: `${AUTH}`
}
})
.then(response => {
let clippedBranch = {
branch: element.name,
author: element.target.author.user.display_name,
diff: response.data
};
// Console Logging here shows the data I'm looking for
console.log(clippedBranch);
return clippedBranch;
})
.catch(error => {
console.log(error);
});
if (clippedBranch) {
filteredByUser.push(clippedBranch); // <-- add to array if exists
}
}
}
});
Ваш исходный код ничего не сделал со значением, которое было окончательно разрешено axios.get(href)
. На самом деле эти вызовы будут завершаться намного позже, чем закончится ваша функция, поскольку вы их вообще не ожидаете.
Я использовал forEach
вместо filter
, потому что мы хотим обрабатывать каждый вход, но не просто сохранять или отбрасывать его (для этого и нужен filter
). Мы хотим построить новый массив, поэтому мы просто push
нужных ему вещей, если найдем его, просматривая каждую запись.