资讯专栏INFORMATION COLUMN

co 函数库

张红新 / 2061人阅读

摘要:参考函数库是用于函数自动执行的一个小工具。是一个函数函数返回一个函数执行完成上面代码中,等到函数执行结束,就会输出一行提示。函数其实就是将两种自动执行器函数和对象,包装成一个库。使用的前提是,函数内的命令后面,只能是函数或者对象。

参考

reference 1

reference 2

co 函数库是用于 Generator 函数自动执行的一个小工具。

usge
var co = require("co");
co(gen);// gen 是一个Generator 函数
// co 函数返回一个 promise
co(gen).then(function (){
  console.log("Generator 函数执行完成");
})
// 上面代码中,等到 Generator 函数执行结束,就会输出一行提示。
原理

Generator 函数就是一个异步操作的容器,它的自动执行需要一种机制,当异步操作有了结果,能够自动交回执行权

两种方法可以做到这一点:

回调,将异步操作包装成 Thunk 函数,在回调函数里面交回执行权。

promise .then()

co 函数其实就是将两种自动执行器( Thunk 函数和 Promise 对象),包装成一个库。

使用 co 的前提是, Generator 函数内的 yield 命令后面,只能是 Thunk 函数 或者 promise 对象。

源码

源码解析看参考链接。

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

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

相关文章

  • 异步发展流程 —— Generators + co 让异步更优雅

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

    dingda 评论0 收藏0
  • co玩转异步

    摘要:否则不会得到异步之后的值对象的值,并没有在中进行处理,而是直接作为返回值返回到对象外面了这就是的魔法。当生成器函数内的逻辑执行完毕且没有错误之后,这个对象返回值变为状态,且将生成器的返回值作为出来的值。 之前我在关于Promise的文章中提到了co这个库。在这篇文章里,我将写一写自己对它的认识。 Trust me,用了co库,你不想用别的,来它半斤异步调用你一口能吃仨。 但是我对Tj大...

    microelec 评论0 收藏0
  • 前端每周清单半年盘点之 JavaScript 篇

    摘要:前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点分为新闻热点开发教程工程实践深度阅读开源项目巅峰人生等栏目。背后的故事本文是对于年之间世界发生的大事件的详细介绍,阐述了从提出到角力到流产的前世今生。 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了解一周前端热点;分为新闻热点、开发教程、工程实践、深度阅读、开源项目、巅峰人生等栏目。欢迎...

    Vixb 评论0 收藏0
  • co.js - 让异步代码同步化

    摘要:前端开发群是大神所编写的异步解决方案的库,用于让异步的代码同步化。对于异步代码来说,回调函数是最基础的方案,带来的弊端也显而易见。让代码扁平化,而让代码同步化。 近期在全力开发个人网站,并且又沉淀了一些前后端的技术。近期会频繁更新。 这篇文章首发于我的个人网站:听说 - https://tasaid.com,建议在我的个人网站阅读,拥有更好的阅读体验。 这篇文章与 博客园 和 Segm...

    lanffy 评论0 收藏0
  • generator、co模块和async三者的区别

    摘要:也就是说,函数的执行,与普通函数一模一样,只要一行。表示函数里有异步操作,表示紧跟在后面的表达式需要等待结果。函数库约定,命令后面只能是函数或对象,而函数的命令后面,可以跟对象和原始类型的值数值字符串和布尔值,但这时等同于同步操作。 generator 特点 function* 可以使用yield返回多次 调用方法 使用next()执行generator代码,每次遇到yield...

    lanffy 评论0 收藏0

发表评论

0条评论

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