tornado中future对象的set_result方法负责将异步执行的结果保存在future中:
当某个回调函数执行时,如果该函数内异步操作返回result时,调用future.set_result(result),同时触发该future的_set_done()方法,执行future._callback中的回调函数,该回调函数将callback(run)注册进ioloop中的callbacks队列,在下一次循环时执行。
def callback(result, future):
if result:
future.set_result(result)
else:
IOLoop.instance().add_callback(callback, result, future)