node.js - thunkify模块中called变量的作用是什么?避免重复执行还是...如何理解
大家讲道理
大家讲道理 2017-04-17 11:14:55
[Node.js讨论组]

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
ringa_lee

我用例子来告诉你,假设有一个这样的函数,它是把两个数字相加,并且可以有一个回调执行的参数。

function sum(a,b,callback){
    var data=a+b;
    callback.call(this,null,data);
    data++;
    callback.call(this,null,data);
}

简单的执行这个函数,就像下面一样

sum(1,2,function(err,data){
   console.log(data);
})

你得到的结果将是两次输出,分别是3,4

如果你对这个使用了thunkify

var sum=thunkify(sum);
var sumfunc=sum(1,2);
sumfunc(function(err,data){
   console.log(data);
})

你会看到只有一个输出,那就是3,后面第二次输出没有了。

这就是上面那个called发挥的作用,它会让你sum函数定义的callback只执行一次,就算后面有更多的callback它也不管不问。

为什么会这样?主要是因为thunkify一般是和co配合用的,而co里面,你callback以后,它接收到数据之后就执行next函数了,如果你多次执行的话,会多次调用next,很明显会造成错误。

这是一个不得已的取舍。

所以你定义sum的时候,不要在callback之后再修改data的值进行第二次callback,养成这个习惯。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号