CO函数库

Posted 刘家三胖

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CO函数库相关的知识,希望对你有一定的参考价值。

CO函数库

用于 Generator 函数的自动执行,co函数返回一个promise对象

 

Generator 函数:

协程的概念:A执行— A暂停,执行权给B--- B交回执行权--- A恢复执行

Generator 函数是协程在 ES6 的实现,最大特点就是用yield命令 可以交出函数的执行权(即暂停执行),让异步代码用同步的方法写出。

         1. 在需要暂停的地方加yield命令

         2. 一般Generator函数的函数名之前要加星号以示区别

         3. 调用 Generator 函数,会返回一个内部指针(即遍历器 )

         4. Generator 函数内部还可以部署(try..catch…)错误处理代码,捕获函数体外抛出(throw)的错误。

 

Generator函数 代码示例:

var fetch = require(node-fetch);
//一个Generator函数
function* gen(){
  var url = https://api.github.com/users/github;
  var result = yield fetch(url);
  console.log(result.bio);
}
//执行Generator函数
var g = gen();  
var result = g.next();  //恢复执行后的结果
 
result.value.then(function(data){ //promise 回调
  return data.json();
}).then(function(data){
  g.next(data);
});
var result = yield fetch(url);

这句是不是很像同步代码,除了加上了 yield 命令。

上面代码中,Generator 函数封装了一个异步操作,该操作先读取一个远程接口,然后从 JSON 格式的数据解析信息。

 

Co函数就是做了这部分工作,让Generator 函数自动执行:

使用方法非常简单:Generator 函数只要传入 co 函数,就会自动执行

 

var co = require(co);

co(gen).then(function (){ //co函数返回一个Promise对象,以此来添加回调

  console.log(Generator 函数执行完成);

})

 

Node调试问题记录:

EADDRINUSE –> E ADDR IN USE 是指端口已被占用

以上是关于CO函数库的主要内容,如果未能解决你的问题,请参考以下文章

常用Javascript代码片段集锦

Chrome-Devtools代码片段中的多个JS库

Xamarin Android 片段库

Xcode 快速开发 代码块

sublime text 3 添加 javascript 代码片段 ( snippet )

VSCode自定义代码片段——声明函数