【发布时间】:2021-03-14 03:28:38
【问题描述】:
我在 JS 中有这个 new_lock 函数,它对避免回调地狱很有用:
function new_lock(){
var unlock,lock = new Promise((res,rej)=>{ unlock=res; });
return [lock,unlock];
}
var [lock,unlock] = new_lock();
call_some_func_with_callback(data,function(){
print(1);
print(2);
unlock();
});
await lock;
print(3)
这是我在里面使用“await”关键字的异步 Python 主函数:
import asyncio as aio
def new_lock():
?How to put code here?
return lock,unlock
async main():
lock,unlock = new_lock()
def cb(ackdata):
print(1)
print(2)
unlock()
# Python web server emits to client side (browser)
socketio.emit("eventname",data,callback=cb)
await lock
print(3)
if __name__=="__main__":
loop = aio.get_event_loop()
t = loop.create_task(main())
loop.run_until_complete(t)
如何在 JS 中创建与“new_lock”函数等效的 Python?甚至是 Python 中必需的 new_lock 函数?
【问题讨论】:
-
"甚至是 Python 中必需的 new_lock 函数?" 我不太确定 JS 中是否需要该函数。见How do I convert an existing callback API to promises? 编辑:虽然,我不得不承认,这是一个非常聪明的实现。我确实喜欢它在技术层面上,但是有前途的回调是优越的,因为你可以立即使用整个 Promise API,包括
await。还有一些用于承诺回调的库。
标签: javascript python promise async-await python-asyncio