0

Пытаюсь вернуть результат из request но никак не получается, подскажите в чем проблема

function parsing() {
    const URL = 'https://random.dog/woof'
    let result: string[]= []
      request(URL, async function (err: any, res: { statusCode: any; }, body: any) {
        if (err) throw err;
    let arr: string = body.split('.').reverse()

    if (arr[0] === 'mp4' || arr[0] === 'gif' || arr[0] === 'webm') {
        parsing()
    } else {
       result.push("https://random.dog/" + body)
     return result[0]
    }
})

return result[0] }

  • 1
    Возможный дубликат: https://ru.stackoverflow.com/questions/554290/ – vsemozhebuty Jul 11 '21 at 15:44
  • Чтобы разобраться в этой проблеме, стоит прочитать этот раздел: https://learn.javascript.ru/async – vsemozhebuty Jul 11 '21 at 15:44
  • 1
    вы предлагаете использывать async/await или callback? – Артем Журбей Jul 11 '21 at 15:59
  • Пробывал async function parsing() но оно тогда возвращает Promise { } после его "расшифровки" или как это называется выводит undefined. – Артем Журбей Jul 11 '21 at 16:09
  • 1
    Асинхронность и сложный, и важный момент. Но если вы прочитаете раздел, у вас будет теоретическая база и вы скорее всего сами разберётесь, что выбрать. – vsemozhebuty Jul 11 '21 at 16:17

1 Answers1

0

Вот ответ:

function parsing() {
const URL = 'https://random.dog/woof';
return axios.get(URL).then(res => {
    let file: any = res.data;

    let arr = file.split('.').reverse()

    if (arr[0] === 'mp4' || arr[0] === 'gif' || arr[0] === 'webm') {
       return false
    }

    return "https://random.dog/" + file
})


} async function get() { let a = await parsing() while (!a) { a = await parsing() } return a }

Подскажите как можно код почистить, а то понимаю что функция get только мешает но без нее не будет работать