麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

小議JavaScript中Generator和Iterator的使用

2024-05-06 16:24:00
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了小議JavaScript中Generator和Iterator的使用,文中舉了一個簡單的示例來說明二者之間的配合,需要的朋友可以參考下

一說到 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 這個名字沒有別的含義了。下面是一個用法示例:

運行

 

 
  1. <script> 
  2. var match = function * (pattern, string) { 
  3. var regexp = new RegExp(pattern, 'g');  
  4. for(let i; i = regexp.exec(string); yield i); 
  5. }; 
  6.  
  7. for(let i of match('a''abcabcabc')) { 
  8. console.log(i); 
  9. </script> 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 日韩视频一区二区三区在线观看 | 精品久久一区二区三区 | 国产精品久久久久永久免费 | 一级黄色淫片 | 成人午夜免费看 | 成人午夜视频在线观看免费 | 欧美日韩专区国产精品 | 操操操日日日干干干 | 精品偷拍久久 | 欧美女人天堂 | 国产免费一区二区三区最新不卡 | 九九热视频免费在线观看 | 欧美一级高潮 | 免费午夜网站 | 久久久久久久久久久久久久av | 韩国精品一区二区三区四区五区 | 久久人人爽人人爽人人片av高清 | caoporn国产一区二区 | 国产精品观看在线亚洲人成网 | 精品一区二区在线视频 | 福利免费在线 | 国产精品成人久久 | 失禁高潮抽搐喷水h | 久久精品性视频 | 日韩在线毛片 | 久久免费视频一区二区三区 | 91短视频在线观看 | 狠狠色成色综合网 | 免费久久久 | 国产91一区 | 久久久一区二区精品 | 西川av在线一区二区三区 | 国产亚洲精品美女久久久 | 久久成人免费观看 | 国产精品视频亚洲 | 视频一区 中文字幕 | 国产亚洲精品综合一区91 | 中文字幕在线观看二区 | 免费观看一级 | 少妇一级淫片免费放播放 | 欧美高清一级片 |