资讯专栏INFORMATION COLUMN

co+generator

wizChen / 3030人阅读

摘要:迭代器函数的定义迭代器中需要返回一个对象这个对象中需要有一个方法,方法调用后,可以返回一个对象对象中有两个参数第一个迭代出的结果可以暂停可以支持异步线性执行怎么实现

迭代器函数的定义 迭代器中需要返回一个对象这个对象中需要有一个next方法,next方法调用后,可以返回一个对象对象中有两个参数 第一个done value迭代出的结果

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)=>{
     // 异步线性执行怎么实现 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);
//     })
//   })
// })

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/114720.html

相关文章

  • Koa源码阅读笔记(1) -- co

    摘要:正好自己之前也想看的源代码,所以趁着这个机会,一口气将其读完。源码解读的源代码十分简洁,一共才两百余行。结语的源代码读取来不难,但其处理方式却令人赞叹。而且阅读的源代码,是阅读源码的必经之路。 本笔记共四篇Koa源码阅读笔记(1) -- coKoa源码阅读笔记(2) -- composeKoa源码阅读笔记(3) -- 服务器の启动与请求处理Koa源码阅读笔记(4) -- ctx对象 起...

    taoszu 评论0 收藏0
  • co源码分析及其实践

    摘要:返回的结果是一个对象,类似于表示本次后面执行之后返回的结果。对象用于一个异步操作的最终完成或失败及其结果值的表示简单点说就是处理异步请求。源码分析主要脉络函数调用后,返回一个实例。参考链接解释对象的用法的源码及其用法 本文始发于我的个人博客,如需转载请注明出处。为了更好的阅读体验,可以直接进去我的个人博客看。 前言 知识储备 阅读本文需要对Generator和Promise有一个基本的...

    vincent_xyb 评论0 收藏0
  • 异步发展流程 —— Generators + co 让异步更优雅

    摘要:遍历器原有的表示集合的数据结构,主要有和,在中又加入了和,这样就有了四种数据集合,还可以组合使用它们,如数组的成员是或,这样就需要一种统一的接口机制,用来处理所有不同的数据结构。 showImg(https://segmentfault.com/img/remote/1460000018998438?w=900&h=431); 阅读原文 Generators 简介 Generato...

    dingda 评论0 收藏0
  • co模块用法及分析

    摘要:模块可以将异步解放成同步。源码分析使用的模块版本号为首先看一些用于判断对象类型的函数对数组方法的引用这两个应该就不用说了吧。。。看一下模块的输出部分因此以下三种用法等价接着就是重头戏函数了。 本文只在个人博客和 SegmentFault 社区个人专栏发表,转载请注明出处 个人博客: https://zengxiaotao.github.io SegmentFault 个人专栏: h...

    muzhuyu 评论0 收藏0
  • 走一步再走一步,揭开co的神秘面纱

    摘要:其实就是判断了的属性是不是个函数再接着,如果是个函数或者生成器,那就像你自己调用函数一样,手动传到里面去执行。 前言 原文地址 源码地址 了解co的前提是已经知晓generator是什么,可以看软大神的Generator 函数的语法,co是TJ大神写的能够使generator自动执行的函数库,而我们熟知的koa也用到了它管理异步流程控制,将异步任务书写同步化,爽的飞起,也摆脱了一直以来...

    _Dreams 评论0 收藏0

发表评论

0条评论

wizChen

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<