当异步调用响应需要继续时,发出异步调用的函数如何继续执行?

2024-09-28 21:23:32 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我在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

我错过了什么


Tags: loghttphelloresponsefunctionbodyfetchhi