Как вызвать оператор после завершения выполнения for / forEach l oop с вызовами ax ios? - PullRequest
0 голосов
/ 03 мая 2020

Это мой forEach l oop. Как вызвать выписку сразу после завершения l oop? Я не могу понять это

array.forEach(item => {
            console.log("Loop started");
            let id = [item.id];
            let type = item.type;
            if (subType == "a") {
                api.method(type, id)
                    .then(response => {
                        console.log("response.data :>> ", response.data);
                    })
                    .finally(() => {
                        console.log("finally item :>> ", item);
                    });
            } else if (subType == "b") {
                api.method(type, id)
                    .then(response => {
                        console.log("response.data :>> ", response.data);
                    })
                    .finally(() => {
                        console.log("finally item :>> ", item);
                    });
            }
        });

Ответы [ 2 ]

1 голос
/ 03 мая 2020

Поскольку топор ios вызывает возврат обещаний. Что вы можете сделать, так это дождаться выполнения всех обещаний.

let jobs: Promise<any>[] = [];
array.forEach(item => {
        console.log("Loop started");
        let id = [item.id];
        let type = item.type;
        if (subType == "a") {
            const job = api.method(type, id)
                .then(response => {
                    console.log("response.data :>> ", response.data);
                })
                .finally(() => {
                    console.log("finally item :>> ", item);
                });
            jobs.push(job);
        } else if (subType == "b") {
            const job = api.method(type, id)
                .then(response => {
                    console.log("response.data :>> ", response.data);
                })
                .finally(() => {
                    console.log("finally item :>> ", item);
                });
            jobs.push(job)
        }
    });
await Promise.all(jobs);
// the code here will start to execute when all promises have been resolved.
0 голосов
/ 03 мая 2020

Я рекомендую использовать p-итерацию npm, у них есть пользовательские функции для каждого массива-l oop, проверьте это do c, чтобы узнать подробности, вы можете просто await l oop или используйте .then() на нем

...