成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

co+generator

wizChen / 3056人閱讀

摘要:迭代器函數(shù)的定義迭代器中需要返回一個對象這個對象中需要有一個方法,方法調(diào)用后,可以返回一個對象對象中有兩個參數(shù)第一個迭代出的結(jié)果可以暫??梢灾С之惒骄€性執(zhí)行怎么實現(xiàn)

迭代器函數(shù)的定義 迭代器中需要返回一個對象這個對象中需要有一個next方法,next方法調(diào)用后,可以返回一個對象對象中有兩個參數(shù) 第一個done value迭代出的結(jié)果

function * a() {
  let x = yield 100;
  console.log("x",x);
  let y = yield 200;
  console.log(y);
  let z = yield 300;
  return z
}


// let flag = false;
// do {
//   let {done,value} = it.next();
//   console.log(value);
//   flag = done;
// } while (!flag);
co
let fs = require("mz/fs");
// let co = require("co");
//  generator  => async + await

function * read() { // 可以暫停 可以支持promise 
  let age = yield fs.readFile("./name.txt","utf8");
  let adress = yield fs.readFile(age,"utf8");
  let r = yield fs.readFile(adress,"utf8");
  return r;
}

function co(it) {
  return new Promise((resolve,reject)=>{
     // 異步線性執(zhí)行怎么實現(xiàn) koa express
    function next(data) {
      let { value, done } = it.next(data);
       if(!done){
         value.then(data=>{
           next(data)
         }, reject);
       }else{
         resolve(value);
       }
     }
     next();
  })
}

co(read()).then(data=>{
  console.log(data);
},err=>{
  console.log(err);
});

// let it = read();
// it.next().value.then(data=>{
//   it.next(data).value.then(data=>{
//     it.next(data).value.then(data=>{
//       console.log(it.next(data).value);
//     })
//   })
// })

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/114720.html

相關(guān)文章

  • Koa源碼閱讀筆記(1) -- co

    摘要:正好自己之前也想看的源代碼,所以趁著這個機會,一口氣將其讀完。源碼解讀的源代碼十分簡潔,一共才兩百余行。結(jié)語的源代碼讀取來不難,但其處理方式卻令人贊嘆。而且閱讀的源代碼,是閱讀源碼的必經(jīng)之路。 本筆記共四篇Koa源碼閱讀筆記(1) -- coKoa源碼閱讀筆記(2) -- composeKoa源碼閱讀筆記(3) -- 服務(wù)器の啟動與請求處理Koa源碼閱讀筆記(4) -- ctx對象 起...

    taoszu 評論0 收藏0
  • co源碼分析及其實踐

    摘要:返回的結(jié)果是一個對象,類似于表示本次后面執(zhí)行之后返回的結(jié)果。對象用于一個異步操作的最終完成或失敗及其結(jié)果值的表示簡單點說就是處理異步請求。源碼分析主要脈絡(luò)函數(shù)調(diào)用后,返回一個實例。參考鏈接解釋對象的用法的源碼及其用法 本文始發(fā)于我的個人博客,如需轉(zhuǎn)載請注明出處。為了更好的閱讀體驗,可以直接進去我的個人博客看。 前言 知識儲備 閱讀本文需要對Generator和Promise有一個基本的...

    vincent_xyb 評論0 收藏0
  • 異步發(fā)展流程 —— Generators + co 讓異步更優(yōu)雅

    摘要:遍歷器原有的表示集合的數(shù)據(jù)結(jié)構(gòu),主要有和,在中又加入了和,這樣就有了四種數(shù)據(jù)集合,還可以組合使用它們,如數(shù)組的成員是或,這樣就需要一種統(tǒng)一的接口機制,用來處理所有不同的數(shù)據(jù)結(jié)構(gòu)。 showImg(https://segmentfault.com/img/remote/1460000018998438?w=900&h=431); 閱讀原文 Generators 簡介 Generato...

    dingda 評論0 收藏0
  • co模塊用法及分析

    摘要:模塊可以將異步解放成同步。源碼分析使用的模塊版本號為首先看一些用于判斷對象類型的函數(shù)對數(shù)組方法的引用這兩個應(yīng)該就不用說了吧。。。看一下模塊的輸出部分因此以下三種用法等價接著就是重頭戲函數(shù)了。 本文只在個人博客和 SegmentFault 社區(qū)個人專欄發(fā)表,轉(zhuǎn)載請注明出處 個人博客: https://zengxiaotao.github.io SegmentFault 個人專欄: h...

    muzhuyu 評論0 收藏0
  • 走一步再走一步,揭開co的神秘面紗

    摘要:其實就是判斷了的屬性是不是個函數(shù)再接著,如果是個函數(shù)或者生成器,那就像你自己調(diào)用函數(shù)一樣,手動傳到里面去執(zhí)行。 前言 原文地址 源碼地址 了解co的前提是已經(jīng)知曉generator是什么,可以看軟大神的Generator 函數(shù)的語法,co是TJ大神寫的能夠使generator自動執(zhí)行的函數(shù)庫,而我們熟知的koa也用到了它管理異步流程控制,將異步任務(wù)書寫同步化,爽的飛起,也擺脫了一直以來...

    _Dreams 評論0 收藏0

發(fā)表評論

0條評論

wizChen

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<