Мой getPlanNames
метод вызывает getSortPlanIDs
до того, как он завершит получение всех sortPlanNames
. Есть ли более красноречивый способ справиться с этим помимо использования таймаута?
Пока я пытался использовать тайм-аут, и это дает мне то, что я ищу. Это просто не лучший способ справиться с этой проблемой.
var sorterNames = [];
var filteredSortPlanNames = [];
module.exports = {
getSorterNames: async function (config) {
var sorterInfo = await (promise = getSorters.getsorters(config));
sorterInfo.forEach(element => {
sorterNames.push(element.locationAlias);
});
this.getPlanNames(config);
},
getPlanNames: async function (config) {
sorterNames.forEach(async (sorterName) => {
var sortPlanNames = await (promise = getSortPlanNames.getPlanNames(config, sorterName));
sortPlanNames.forEach(element => {
var str = element.toString();
if (str.indexOf('_sortplan1') != -1 && str.indexOf('1', str.length - 1) != -1) {
filteredSortPlanNames.push(element);
}
});
})
this.getSortPlanIDs();
},
getSortPlanIDs: async function (config) {
console.log(filteredSortPlanNames);
},
loadSortPlans: async function (config) {
}
};
Я бы хотел, чтобы асинхронный вызов внутри функции getPlanName
завершился до вызова getSortPlanIDs