异步调用有问题。需要一些想法,如何正确处理

时间:2019-04-13 16:37:30

标签: asynchronous

我的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之前完成

0 个答案:

没有答案