resul()和setresult()怎么用
时间: 2023-10-06 10:13:08 浏览: 133
Alamofire源码解读系列(五)之结果封装(Resul
`setResult()`和`result()`都是异步编程中用于返回结果的方法。
`setResult(result)`方法是Future类中的方法,用于设置Future对象的结果,参数`result`是Future对象的结果值。
`result()`方法是协程中的方法,用于获取协程的执行结果,如果协程还没有执行完,则会阻塞直到协程执行完毕并返回结果。参数`result`是协程的执行结果。
下面是它们的用法示例:
```python
import asyncio
async def coro():
await asyncio.sleep(1)
return 'result'
# 使用协程
async def main():
r = await coro()
print(r) # 输出 result
# 使用 Future
async def main():
f = asyncio.Future()
f.add_done_callback(lambda x: print(x.result()))
f.set_result('result')
asyncio.run(main())
```
在第一个示例中,我们使用了协程来获取执行结果,即使用`await`等待协程执行完毕并返回结果。
在第二个示例中,我们使用了Future来获取执行结果,即使用`add_done_callback`方法在Future执行完毕后获取结果,并使用`set_result`方法设置Future对象的结果值。
阅读全文