|
利用函数数组,实现优先级任务
最后来一个比较实务的模块。
每个机器的准备工作都很重要。
不同类型的任务(练功/赚钱/打架)的任务都会有所不同。
所以最好的方式自然是做好预设的异步回调模块,然后创建不同的数组,比如:
//注册通用的准备组
let common = App.Proposals.NewProposalGroup(
"eatyao",
"cash",
"gold",
"qu",
"silver",
"coin",
"jinchuanyao",
"yangjingdan",
"food",
"drink",
"inspire",
"dazuo",
"heal",
"tuna",
"dispel",
"assets",
"refund",
"bond",
"item",
"repair",
"dropwp",
"summon",
)
App.Proposals.Register("", common)
App.Proposals.Register("common", common)
//注册通用带学习的准备组
App.Proposals.Register("commonWithStudy", App.Proposals.NewProposalGroup("common", "study", "jiqu"))
//注册通用带学习和放弃经验的准备组
App.Proposals.Register("commonWithExp", App.Proposals.NewProposalGroup("common", "exp", "study", "jiqu"))
//注册准备指令
而如果每次检查都执行所有的代码明显不合适,所以必然要利用函数的返回值
最简单的,就是每个函数返回true/false,返回false继续,返回 true继续,这就是个典型的责任链模式了。
但返回true和false,代码还需要写很多处理代码,特别是一旦没写好很容易造成需要改结构和所有相关代码的地方
所以我们不如改返回值
如果需要检查不需要处理,就返回空 (null)
如果需要中断,拿就返回一个函数(异步回调)
整体的准备代码就是
循环一下传入的准备数组。
每次执行一个准备函数。
返回空,就检查下一个。
返回函数,就执行函数,指向完了再重头循环。
如果全部检查完了,就开始任务主体工作。
|
|