接手了平台其他相關遊戲的**,流程控制相互交錯,不易理解、難以維護。(可能是剛做遊戲的原因,如果你們有什麼更簡單的流程控制方法,歡迎分享)。我下意識的就想到了generator函式的特性,感覺用著這裡非常方便(以前一直覺得這是個非同步流程控制中過度性質的方法,並且需要配合co才能自動執行,所以基本沒實際用過,koa不算...)
1、易於理解、便於開發、容易維護(看到generator函式猶如看到了流程圖)
2、開發思路清晰(每個階段(函式)只需要關注自己的業務邏輯,完成直接下一步,而不用管下一步要做什麼操作)
3、不存在會忘記清除定時器的問題
1、generator函式執行後會生成乙個iterator。(注意不要加new)(簡單說就是個有next方法的物件,執行一次返回乙個值)
2、每次next的呼叫,執行yield後面的語句並返回該語句執行的結果
3、每次只執行乙個yield,後面的語句不會再執行、只有在執行下次next函式時才執行。(可以利用這點做定時器的清理工作,而且可以說基本不會忘記)
4、yield* 可以將後面的變數(可迭代的變數,字串、陣列等)中的值乙個乙個的返回。執行一次返回其中的乙個值
class esydprocess
*['flowgenerator']()
} else
yield this.settlestage(); // 結算
}*['operatestage']()
}yield this.bankeroperate(); // 莊家操作
}// 轉到下個階段
nextstage() );
}// 開始遊戲
start(seats)
betstage(), esydconsts.stagetime.bet_stage);
}assignstage()
ensurestage()
// 監聽使用者下注操作
userbetoperatelistener(uid)
}/**
* 其他函式...*/}
抓取流程 generator
一。topn job 對urls預處理並取topn urls by score decending.map urls預處理和格式轉換 a.url filter b.初步處理是否fetch 當fetchtime 比當前時間滯後才fetch c.抓取間隔處理。如果 在crawl.gen.delay時間範...
五流程控制函式
五流程控制函式 1.if函式 if else 的效果 select if 10 5,大 小 select last name,commission pct,if commission pct is null,沒將金,哈哈 有將金,嘻嘻 備註 from employees 2.case 函式的使用一,...
MYSQL 流程控制函式
if函式 條件,返回值1,返回值2 select if 10 5,大 小 select last name,commission pct,if commission pct is null,不存在 有 別名 from employee case函式 等值 1.case 要判斷的變數或表示式 when...