zozoh / walnut

项目代号为 walnut
Apache License 2.0
5 stars 0 forks source link

引信:ZUI 界面增加一个全局延迟处理机制 #291

Open zozoh opened 6 years ago

zozoh commented 6 years ago

场景

如果用户修改了某个内容,切换其他的界面,想阻止它,并提示一下之类的

解决办法

// 设置一个引信
// 如果已经有引信的,直接覆盖掉
// 必须有 handler 或者 asyncHandler,否则 set 会抛错
fuze.add({
    context : {}          // 处理函数的 this

    // 引信的异步处理函数
    // 如果成功触发,需要主动调用 callback,这个 callback
    // 是调用者传入的后续处理
    handler : {c}F(callback)
});

// 快捷方法
fuze.add({c}F(), context);

// 清除所有引信
fuze.clear();

// 引爆所有引信,全部引爆成功后,会调用传入的 callback
fuze.fireAll(callback)

引信会在 fuze 全局维持一个队列

fuze._queue : 

[f0] <-- 从第一个开始引爆
[f1]
[f2]
 ++  <-- 新增引信
zozoh commented 6 years ago

@pangwu86 有没有类似的需求场景?

pangwu86 commented 6 years ago

暂时没有