Возникли проблемы с асинхронными вызовами.Нужны идеи, как правильно обращаться - PullRequest
0 голосов
/ 13 апреля 2019

Мой 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...