V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  pursuer  ›  全部回复第 2 页 / 共 17 页
回复总数  321
1  2  3  4  5  6  7  8  9  10 ... 17  
@nomagick 抛出异常符合预期的,Python 也是抛出 CancelError ,只有抛出异常才能保证类似 try{}finally 的资源正常释放。
因为我是用了 super.then 的,所以原本 promise 的内部处理应该遵照原有的实现,只是在 onfulfilled 前检测中止状态,转为调用 onrejected
@nomagick 这个方法确实比较 hacky ,里面也可能埋藏着尚未发现的坑,所以我也指明这是一个实验性的项目。只是有时候确实想要个这样的控制 async/await 运行流的工具,不知道 tc39 以后会不会搬出类似的东西。
@nomagick Promise 不会 pending ,abort 的情况会直接传递到 onrejected ,抛出 AbortError 。在 taskMain 函数返回后会做 task 的清理工作。当然,如果 taskMain 返回后有其他继承同一 task 的 Promise 尝试访问 task 上下文会得到 undefined ,这算是一个小问题。
@nomagick 实现 Python 的 cancel 类似的机制,中断异步传递抛出异常,同步代码都是没法中断的,确实像你说的可以魔改为 await 为 iterator 模式, 但我写的这个方法可以不用魔改 js 就可以实现这个效果。
50 天前
回复了 Aspector 创建的主题 分享发现 最近看了一本讲 NT 内核开发过程的书
异步 IO 是很明显的需求,当然要是讨论 IOCP 和 select/epoll 那可能 IOCP 确实好一点,但说到底异步在没有实现无栈协程的 C/C++上不管怎么写都会比较难受
如果要兼容低版本就有影响,所以我一般考虑尽量不引入第三方库然后改为嵌入 Webview ,至少 Android5.0 可以支持到 Chrome89 左右的版本,对前端框架一般是够了。Android 用了类似 jvm 的 runtime ,结果 runtime 却不能像 jvm 那样单独升级,奇怪的设计
73 天前
回复了 MXXXXXS 创建的主题 游戏 尝试更多的武器
rogue like 游戏,每局拿到的东西都不一样,需要按照当前有的东西做最优选择。
83 天前
回复了 jlak 创建的主题 Go 编程语言 写 Go 真的好爽
@jlak Go 能写的类型约束 TS 都能写,TS 能写的 Go 不一定能,说“Go 类型系统比 TS 好”没道理的。当然你要说 Go 简单那确实简单,不过对我来说有 TS 的复杂度可以接受。
88 天前
回复了 CoderLim 创建的主题 游戏 SpaceWaves 一款网页小游戏
这就是把几何冲刺里的 WAVE 模式拆出来成单独的游戏了吧。。画风也很像
搜了下果然 monaco-editor ,现在编辑器是不是 monaco-editor 就最好用?
@Tdy95 我看不到你怎么赋值 websocketAll[client_id]['main_loop']。也没法判断 futures_obj[client_id] 也不知道是不是和 connected["audio_future"]是同一个对象。或者在我上面说的两个地方打印下 get_running_loop() 和 future 看看是不是一致的
@Tdy95 不知道你的 websocketAll[client_id]['main_loop']是哪里来的,future 正常唤醒是要求你的 future 创建和 set_result 在同一个线程/event_loop 中执行,要看着两个地方。
@zagfai 对应用本身影响不大,但是会额外损耗其他进程的 CPU 资源,能用回调唤醒自然优先回调唤醒
顺便一提,此时 set_futures_status 应该改成 async def

eventloop 是你创建 future 的线程的 eventloop ,可以通过 get_event_loop()获取
这样可以解决无法用 future 唤醒导致的阻塞的问题。

while not future.done():
--await asyncio.sleep(0)
result = await future
这种写法就是个坑,相当于轮循,完全没发挥协程的优势,不建议使用这种写法
1  2  3  4  5  6  7  8  9  10 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2684 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 10:15 · PVG 18:15 · LAX 02:15 · JFK 05:15
Developed with CodeLauncher
♥ Do have faith in what you're doing.