__CA__.py
6 years ago
相對於 ES6+ 的 Promise,Python 的 asyncio 在 API 上還是有很大的進步空間
latest #12
__CA__.py
6 years ago
相對於 Promise 就是 awaitable,awaitable 就是 Promise,Python 的 awaitable 可能會是 asyncio.Future, asyncio.Task, coroutine object 三種
__CA__.py
6 years ago
而官方文件上有時只會簡稱 coroutine,很容易和 coroutine object/coroutine function 混淆
__CA__.py
6 years ago
一些相似但不一樣的東西:
asyncio.ensure_future / AbstractEventLoop.create_task()
asyncio.gather / asyncio.wait
立即下載
__CA__.py
6 years ago
asyncio.gather 從用途來說應該是處理同質容器,但它接受的是不定量參數
__CA__.py
6 years ago
asyncio.wait 應該是異質參數,但它接受的是 list
__CA__.py
6 years ago
最少應該統一使用 list 或是 *args
__CA__.py
6 years ago
目前沒有簡易方式可以 chain/forward futures,也說是說不能把 f1 當成 f2 的 result,讓 f2 自動回傳 f1 的內容
__CA__.py
6 years ago
目前也沒什麼很漂亮的方法能分辨 awaitable 和 non-awaitable
__CA__.py
6 years ago
例如你有一個容器,裡面是 awaitable 和 non-awaitable 混雜。
__CA__.py
6 years ago
在 ES6+ 這完全不是問題,你可以 await 任何 value。但是 Python 就沒有這麼方便
__CA__.py
6 years ago
也沒有 async lambda 這種東西,將來應該也不會有
__CA__.py
6 years ago
唯一我認為還不錯的是有考慮 cancel。當然這也加了很大的複雜度
back to top