Generator函式在流程控制中的應用

2021-09-13 01:10:06 字數 1038 閱讀 9946

接手了平台其他相關遊戲的**,流程控制相互交錯,不易理解、難以維護。(可能是剛做遊戲的原因,如果你們有什麼更簡單的流程控制方法,歡迎分享)。我下意識的就想到了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...