假设我在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
我在这里想念什么?