JavaScript: как дождаться завершения вызова asyn c api - PullRequest
0 голосов
/ 26 мая 2020

У меня есть асинхронная c функция:

 const _getSelectedComponentVariantByComponentName = async (name) => {
            const response = await api.get(`/internal/api/Component/GetComponentVariantByComponentName/${name}`);

            componentRow.component = response.data;
            return componentRow;
        };

И я пытаюсь использовать эту функцию внутри .map() метода:

let componentRows = [...getState().formulaBuilder.componentRows];
componentRows = componentRows.map(async row => {
                row  = await _getSelectedComponentVariantByComponentName(row.name);
                return row;
            });

Но в этом случае я получил обещание со статусом "в ожидании". Как дождаться завершения вызова asyn c api и вернуть значение;

1 Ответ

2 голосов
/ 26 мая 2020

Вы можете использовать Promise.all с картой и использовать await с ним.

map вернет массив обещаний, Promise.all будет ждать выполнения всех обещаний, а затем разрешится с помощью значения в виде массива для каждого обещания.

Также убедитесь, что вы выполняете приведенный ниже код в функции asyn c:

 let componentRows = [...getState().formulaBuilder.componentRows];
  componentRows = await Promise.all(componentRows.map(row => {
            return _getSelectedComponentVariantByComponentName(row.name);
        }));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...