Skip to content

异步组件模块 ^1.4.0

通用的异步组件模块 用于处理异步相关的业务逻辑。

python
from .QuModLibs.Modules.Promise.Server import *
# from .QuModLibs.Modules.Promise.Client import *

异步 sleepAsync 组件

通过 asyncRunner 装饰器可修饰函数以支持异步等待。

python
# 每过一秒打印一次 'async sleep'
@asyncRunner
def loopLog():
    for i in range(3):
        print("async sleep")
        yield sleepAsync(1.0)

注意事项

只有被 asyncRunner 装饰的函数才能使用异步组件。

异步 event 组件

Promise模块中提供了一个 event 组件 用于等待某个事件的触发。

python
# 等待某个事件
@asyncRunner
def awaitEvent(entityId):
    def eventBack(args):
        if args["entityId"] == entityId:
            return True
    """
        每次触发等待的事件时都会调用callBack的函数
        如果callBack返回True这个promise成功 value为dict参数
        如果超过最大时间, promise失败 value 为 None
        参数:
            @name [str]: 需要等待的事件名
            @callBack [function]: 事件触发时的回调函数
            @time [float | int]: 最大等待时间
        返回:
            [bool]: promise是否成功
            [dict | None]: 最后一次触发事件时的参数
    """
    state, value = yield waitEvent("ActuallyHurtServerEvent", eventBack, 3.0)
    # 根据promise的状态执行后续代码

Released under the BSD3 License