Как добавить данные ответа Axios в массив - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь отправить массив URL-адресов асинхронно в API, который сокращает URL-адреса и записывает ответы в новый массив, мой вопрос:

Как выполнить что-то после того, как все обещания разрешены?

Мой код

linkList = ['https://www.link1.com', 'https://www.link2.com'];
adsList = []
let ads = async () => {
    const req = axios(apiUrl + linkList)
    const res = await Promise.resolve(req)
    adLinks.push(res.data.shortenedUrl)
    console.log(adsList)
    // Here, it shows a updated array everytime a promise is resolved
}
ads()
console.log(adsList) // Returns [], because the promises aren't resolved by the time it runs

Я ожидаю получить массив сокращенных URL-адресов в adsList

1 Ответ

0 голосов
/ 04 января 2019

Я предполагаю, что axios на самом деле ваш асинхронный запрос, и в этом случае это все, что вам нужно, чтобы получить список сокращенных URL:

const linkList = ['https://www.link1.com', 'https://www.link2.com'];
const adsList = await Promise.all(
  linkList.map(url => 
    axios(apiUrl + url).then(({data: shortenedUrl}) => shortenedUrl)
  )
);
...