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

首頁 > 語言 > JavaScript > 正文

ES6 Generator函數的應用實例分析

2024-05-06 15:37:28
字體:
來源:轉載
供稿:網友

本文實例講述了ES6 Generator函數的應用。分享給大家供大家參考,具體如下:

Generator 函數是 一種異步編程解決方案,Generator 函數會返回一個遍歷器對象,Generator 函數是一個普通函數,但是有兩個特征。一是,function關鍵字與函數名之間有一個星號;二是,函數體內部使用yield表達式。

認識generator函數

function * fn() { console.log('hello'); return 'Joh';}// 執行fn()時不會直接執行方法體中的代碼,它會返回一個指針, 這個指針實現了 interator接口,也就是返回一個interator對象let it = fn();// 通過調用next就會執行方法體, 返回結果是 {value:'Joh', done:true}, 其中next返回的是函數體中return的值let res = it.next();console.log(res);

generator函數中的yield 與 return

function * fn() {  // 和yield相配合,把一個generator內部分為幾個斷點來執行,每個斷點就是yield語句  // 注意 yield和return的區別: yield可以有多個,return只能有1個  yield 1;  yield 2;  yield 3;  return 4; // 可以沒有return值,done為true的value將會是undefined}let it = fn();// 在for-of 循環中只能打印done為false的value值,done為true時,程序終止for(let v of it) {  console.log(v); // 分別輸出 1 2 3}

yield 的值與賦值語句

function * fn(_name) { let name = yield _name; // yield 的默認值為undefined return name;}let it = fn('Joh');console.log(it.next()); // {value:'Joh', done:false}console.log(it.next('Tom')); // {value:'Tom', done:true} // 此處value應該為undefined,但是通過next參數的形式賦值改變了最后一個值console.log(it.next('Lily')); // {value: undefined, done:true} // 已經循環完畢,即使傳值也是undefined

yield 語句的位置與括號

function sum(a, b) { return a + b;}function * fn() { let res = sum(yield 1, 5 + (yield 3)); console.log(res); console.log('my qq: ' + (yield qq)); // yield 在一個語句中需要括起來}fn();

yield 異常捕獲

異常捕獲的方式1:

function * fn() { let qq = yield; // yield 默認返回undefined, 不會拋出異常 console.log(qq);}let g = fn();g.next(); // 第一個斷點沒有輸出// g.next('qq 11111'); // 完畢之后傳值輸出:qq 11111g.throw('error!'); // Uncaught error!

異常捕獲的方式2:

function * fn() { let qq; try {  qq = yield; // yield 默認返回undefined }catch(e){  console.log('qq have error'); }finally{  console.log(qq); }}let g = fn();g.next();g.throw('error!');// qq have error// undefined

異常捕獲的方式3:

function * fn() { let qq; qq = yield; console.log(qq);}let g = fn();g.next();try{ g.throw('error!');}catch(e){ console.log('qq have error!');}            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 东城区| 平利县| 钟山县| 武川县| 怀柔区| 剑河县| 桃源县| 绵竹市| 汾西县| 翁牛特旗| 子长县| 双城市| 阿拉善盟| 河津市| 英吉沙县| 佛坪县| 韶关市| 德格县| 南溪县| 昌邑市| 二连浩特市| 柳州市| 临西县| 永泰县| 洛浦县| 桐城市| 南丹县| 德格县| 句容市| 绵竹市| 玉林市| 广南县| 肇庆市| 荣昌县| 红河县| 郎溪县| 邢台市| 双牌县| 蒲江县| 万源市| 都江堰市|