Переменные, объявленные в Promise, сначала возвращаются, а затем выполняется функция
У меня есть следующий фрагмент кода, который сначала получает некоторые значения фильтра и помещает их в filterFetchPromises.Функция получения фильтров сама по себе является асинхронной функцией.Затем я обрабатываю данные внутри filterFetchPromises, а затем мне нужно вернуть обработанные данные.Переменные, используемые для хранения обработанных данных, объявляются в функции getfilters (), потому что мне нужно, чтобы они устанавливались пустыми после каждой итерации.
В настоящее время, когда я распечатываю имена фильтров, значения фильтров, они просто показываютпустой.Как сначала обработать данные из filterFetchPromises, а затем вернуть эти значения?
function getfilters() {
return new Promise(function(resolve) {
let filterFetchPromises = [];
let dashboardfilters = [];
let filternames = [];
let filtervalues = [];
filterFetchPromises.push(worksheet.getFiltersAsync());
Promise.all(filterFetchPromises).then(function (fetchResults) {
fetchResults.forEach(function (filtersForWorksheet) {
filtersForWorksheet.forEach(function (filter) {
dashboardfilters.push(filter);
if (contains(filternames, filter.fieldName)) {
console.log("Duplicate Entry")
}
else {
let filtervalues_temp = []
console.log(filter.fieldName)
if ((filter.appliedValues).length > 0) {
filternames.push(filter.fieldName)
console.log(filter.fieldName)
filter.appliedValues.forEach(function(test) {
console.log(test.value)
filtervalues_temp.push(test.value)
})
filtervalues.push(filtervalues_temp)
}
}
});
});
});
// console.log(filternames)
// console.log(filtervalues)
return resolve([filternames, filtervalues]);
})
}
getfilters().then(function ([filternames, filtervalues]) {
console.log("Function got over.")
console.log(filternames)
console.log(filtervalues)
})
В настоящее время имена и значения фильтров пусты.Я просто хочу, чтобы сначала были обработаны данные, а затем напечатаны эти переменные