Загрузка...

Как дождаться завершения ассинхронного метода?

Тема в разделе Node.js создана пользователем RichPerson 23 фев 2023. 310 просмотров

  1. RichPerson
    RichPerson Автор темы 23 фев 2023 Разработка - https://zelenka.guru/threads/4480553/ 2160 23 сен 2019
    [IMG]
    Наебался с этой хуйней пиздец. Хелпуйте, вопрос в заголовке. Суть в том что у меня данная ошибка.
    [IMG]
     
  2. RichPerson
    RichPerson Автор темы 23 фев 2023 Разработка - https://zelenka.guru/threads/4480553/ 2160 23 сен 2019
    Страница обновляется сама каждые 5 сек. Если приходит ответ, должен быть редирект, но как я понимаю последняя строка выполняется первее всех
     
  3. Gumus
    Ну тут либо callback функция(она срабатывает после завершения асинхронного кода), либо промисы(гугли сам), либо async await(гугли сам).
     
    1. Посмотреть предыдущие комментарии (2)
    2. RichPerson Автор темы
      sklifosowsky, я это описал, я понимал в чем ошибка. Я переписал по-другому. Запрос отправил через axios на getUpdates, обработал через промис и все. Сейчас все отлично
    3. sklifosowsky
      RichPerson, надеюсь ты убрал создание обработчика на каждый запрос?
    4. RichPerson Автор темы
      sklifosowsky, может узнать о чем ты конкретней?
    5. Посмотреть следующие комментарии (3)
  4. Кодер
    [IMG]
    Судя по ошибке, пытаешься сделать редирект после того, как уже выдал какой-то ответ в браузер
     
    1. Посмотреть предыдущие комментарии (4)
    2. RichPerson Автор темы
    3. Кодер
      RichPerson, sendFile не поддерживает await?
    4. RichPerson Автор темы
  5. gcc_machine
    [IMG]
    ты надеюсь понимаешь, что твой await не работает?)
     
    1. RichPerson Автор темы
  6. lgxteam
    lgxteam 23 фев 2023 :BrainCosmic: 334 12 фев 2023
    можно использовать ключевое слово await, которое ожидает завершения выполнения асинхронной операции.

    Пример:
    import asyncio



    async def my_coroutine():

    await asyncio.sleep(1)

    print('Hello, world!')



    async def main():

    print('Before coroutine')

    await my_coroutine()

    print('After coroutine')



    asyncio.run(main())


    В этом примере my_coroutine() - асинхронный метод, который приостанавливает выполнение на 1 секунду с помощью asyncio.sleep().

    В функции main() мы используем await для ожидания завершения my_coroutine() перед продолжением выполнения.

    В результате выполнения этой программы будет выведено:
    Before coroutine

    Hello, world!

    After coroutine


    После выполнения await my_coroutine() программа продолжит выполнение и выведет "After coroutine".

    Таким образом, использование await позволяет дождаться завершения асинхронного метода.
     
Загрузка...
Top