网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網(wǎng)

擴(kuò)展微信小程序框架功能:Generator

發(fā)布時(shí)間:2018-04-14 15:06 所屬欄目:小程序開發(fā)教程

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

Generator

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

Generator 可以幫助我們讓代碼風(fēng)格更整潔--用同步的代碼風(fēng)格來寫異步代碼,它本質(zhì)上是一個(gè)可以暫停計(jì)算并且可以隨后返回表達(dá)式的值的函數(shù)。

Generator對(duì)象是由一個(gè)生成器函數(shù) generator function 返回的。并且它是同時(shí)遵守 The iterable protocol 可遍歷協(xié)議和The iterator protocol 迭代器模式協(xié)議。

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

co

co是一個(gè)基于ES6 Generator特性實(shí)現(xiàn)的異步流程同步化寫法的工具庫。co 函數(shù)庫是著名程序員 TJ Holowaychuk 于2013年6月發(fā)布的一個(gè)小工具,用于 Generator 函數(shù)的自動(dòng)執(zhí)行。

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

基本用法

有一個(gè) Generator 函數(shù)。

    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函數(shù)執(zhí)行完畢了'); // 輸出:Generator函數(shù)執(zhí)行完畢了
    });

上面代碼中,Generator 函數(shù)只要傳入 co 函數(shù),就會(huì)自動(dòng)執(zhí)行。co 函數(shù)返回一個(gè) Promise 對(duì)象,可以用 then 方法添加回調(diào)函數(shù)。



易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/23393.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×