nodejs thunkify 学习

参考文档:https://github.com/tj/node-thunkify

https://github.com/tj/co


主要功能:配合co使用,将function(param,callback),风格的函数,转化为thunky风格的函数,以供co yield 后面 使用

 

Thunks

Thunks are functions that only have a single argument, a callback. Thunk support only remains for backwards compatibility and may be removed in future versions of co.

什么是thunks

Thunks 是一个只有一个参数(即回调函数)的函数,thunk 主要是为了向后兼容,未来co可能就不会再支持这种风格的函数了


--------------------------如下代码使用thunkfy-----------------

var co = require('co');
var thunkify = require("thunkify");
// 模拟一个普通的异步请求类似readFile,不是thunk风格,有两个参数第一个是函数参数,第二个是回调
function myThunk(userName,callback)
{
    setTimeout(function(){
        callback(null,"hello "+userName );
    },200)
}
// myR 是封装之后符合thunk风格的函数
var myR  =thunkify(myThunk);
co(function *(){
    var a = yield myR("a");
    console.log(a);
    return "over";
}).then(function(r){
    console.log(r);
})
 
-------------------------------------
如上代码等价于如下不使用thunkify的代码(但是有些现成的函数库是无法这样改造的,最典型的是readFile)
var co = require('co');
function myR(userName)
{
    return function(callback)
    {
        setTimeout(function () {
            callback(null,"hello "+userName );
        },200)
    }
}
co(function *(){
    var a = yield myR("a");
    console.log(a);
    return "over";
}).then(function(r){
    console.log(r);
})

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值