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

首頁 > 課堂 > 小程序 > 正文

擴展微信小程序框架功能:Generator組件的使用

2020-03-21 16:19:20
字體:
來源:轉載
供稿:網友

Generator函數是ES6提供的一種異步編程解決方案,語法行為與傳統函數完全不同。Generator 生成器允許你通過寫一個可以保存自己狀態的的簡單函數來定義一個迭代算法。Generator 是一種可以停止并在之后重新進入的函數。生成器的環境(綁定的變量)會在每次執行后被保存,下次進入時可繼續使用。generator 字面上是“生成器”的意思,在 ES6 里是迭代器生成器,用于生成一個迭代器對象。

Generator

Generator函數的調用方法與普通函數一樣,也是在函數名后面加上一對圓括號。不同的是,調用Generator函數后,該函數并不執行,返回的也不是函數運行結果,而是一個指向內部狀態的指針對象。接下來調用遍歷器對象的next方法,才會使指針移向下一個狀態。也就是說,每次調用next方法,內部指針就從函數頭部或上一次停下來的地方開始執行,直到遇到下一個yield語句(或return語句)為止。這樣可以產生一定的序列值。

Generator 可以幫助我們讓代碼風格更整潔--用同步的代碼風格來寫異步代碼,它本質上是一個可以暫停計算并且可以隨后返回表達式的值的函數。

Generator對象是由一個生成器函數 generator function 返回的。并且它是同時遵守 The iterable protocol 可遍歷協議和The iterator protocol 迭代器模式協議。

 function* gen() {    yield 1;   yield 2;   yield 3; } var g = gen(); // "Generator { }"

co

co是一個基于ES6 Generator特性實現的異步流程同步化寫法的工具庫。co 函數庫是著名程序員 TJ Holowaychuk 于2013年6月發布的一個小工具,用于 Generator 函數的自動執行。

co需要使用Promise特性。co 函數庫其實就是將兩種自動執行器(Thunk 函數和 Promise 對象),包裝成一個庫。使用 co 的前提條件是,Generator 函數的 yield 命令后面,只能是 Thunk 函數或 Promise 對象。

基本用法

有一個 Generator 函數。

  var gen = function* () {    var a = Promise.resolve(1);    var b = Promise.resolve(2);    var c = Promise.resolve(3);    var res = yield [a, b, c];    console.log(res); // 輸出:[1, 2, 3]  };  co(gen).then(function(){    console.log('Generator函數執行完畢了'); // 輸出:Generator函數執行完畢了  });

上面代碼中,Generator 函數只要傳入 co 函數,就會自動執行。co 函數返回一個 Promise 對象,可以用 then 方法添加回調函數。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 繁昌县| 甘孜| 新巴尔虎左旗| 荥阳市| 铁岭县| 中方县| 黎川县| 五河县| 桃源县| 陆良县| 类乌齐县| 海阳市| 保靖县| 吴川市| 祁阳县| 泰和县| 襄垣县| 北辰区| 炉霍县| 静海县| 获嘉县| 泰顺县| 巴南区| 太仆寺旗| 岢岚县| 灵山县| 新宾| 新绛县| 仙游县| 舟曲县| 应用必备| 苏州市| 丰县| 新龙县| 莆田市| 伊春市| 浙江省| 桐乡市| 宁阳县| 靖远县| 湛江市|