需要进行异步调用响应时,进行异步调用的功能如何继续执行?

时间:2019-05-22 21:13:00

标签: javascript python asynchronous operating-system tornado

假设我在Tornado中异步地进行了一个假设较长的http调用:

@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

我在这里想念什么?

0 个答案:

没有答案