Как функция, выполняющая асинхронный вызов, продолжает выполнение, когда требуется ответ асинхронного вызова? - PullRequest
0 голосов
/ 23 мая 2019

Предположим, я асинхронно выполняю гипотетически длительный http-вызов в Tornado:

@tornado.gen.engine
def get():
    response = yield asyncHTTPClient.fetch(...)
    # Response parsing
    body = response.body
    ...

Я не понимаю, является ли вызов asyncHTTPClient.fetch асинхронным и обрабатывается в другом потоке, а выполнение возвращается Tornado во время ожидания, response не будет пустым, когда поток продолжит выполнение пока он не прервется снова после завершения асинхронного вызова?

Моя путаница связана с тем, что в javascript, например, после выполнения асинхронного вызова поток выполнения продолжается:

function sayHelloAsync(){
      // async call
      setTimeout(function(){
            console.log('Hello')
      }, 3000)
      // Will be printed first
      console.log('Hi')
}

Это напечатает:

Hi
Hello

Что мне здесь не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...