国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

小議JavaScript中Generator和Iterator的使用

2019-11-20 11:58:13
字體:
來源:轉載
供稿:網友

一說到 Generator,大家就會扯上異步之類是話題。這顯然是被一些奇奇怪怪的東西帶壞了。與 Generator 關系密切的應該是 Iterator 才對,拿 Generator 來處理異步也許是一些 C# 程序員才會想的事。當然這種用法確實有一套完整的東西,只是我個人不喜歡而已。
  非要把 Generator 和異步聯系上,唯一的點就是 next 的調用時機。因為 next 可以異步地調用,所以 Generator 才得以被異步地濫用。
  但我覺得 next 這個方法雖然可以異步調用,但正確的使用方式應該是同步的。至少當一個 Generator 實例被用于 for-of 循環或 [...obj] 解構時都是連續調用 next 的。
  除了 next 的同異步問題外,next 的參數也是個問題。由于 next 調用時傳入的參數會被作為 yield 運算符的返回值,所以 generator 有了更豐富的使用方式。在早期的 python 中 yield 是語句而不是運算符,所以也不存在這樣的用法。后來的版本才把 yield 作為運算符,所以才出現了各種坑。
  把 Generator 實例作為 Iterator 時既不會異步調用 next,也不會給 next 傳入參數。我覺得這才是 Generator 的正確用法。或者說白了,Generator 就是用來實現 Iterator 的。至少 Generator 這個名字沒有別的含義了。下面是一個用法示例:
運行

<script>var match = function * (pattern, string) { var regexp = new RegExp(pattern, 'g');  for(let i; i = regexp.exec(string); yield i);};for(let i of match('a', 'abcabcabc')) { console.log(i);}</script>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东乡县| 开鲁县| 竹北市| 莒南县| 鄂尔多斯市| 舞阳县| 石门县| 衡东县| 新蔡县| 库尔勒市| 红安县| 金山区| 永安市| 扶沟县| 龙江县| 文成县| 苍梧县| 宜宾市| 随州市| 东丽区| 小金县| 汶上县| 黎城县| 湘乡市| 兴海县| 永安市| 博爱县| 遵义市| 张掖市| 图木舒克市| 清流县| 新河县| 翁牛特旗| 河间市| 疏附县| 华容县| 呼图壁县| 朔州市| 兰坪| 正定县| 浦城县|