本文实例讲述了node . js实现回调的方法。分享给大家供大家参考,具体如下:
<强>向回调函数传递额外的参数强>
在调用函数中,使用匿名函数中实现需传递的参数,再次匿名函数内调用回调函数。
var=事件需要(“事件”); 函数CarShow () { events.EventEmitter.call(这个); 这一点。seeCar=函数(使){ 这一点。发出(“sawCar”,使); } } CarShow.prototype。__proto__=events.EventEmitter.prototype; var=new CarShow展示(); 函数logCar(使){ 控制台。日志(“看见”+); } 函数logColorCar(制作,颜色){ 控制台。日志(“看见一个% s % s”,颜色,制造); } 秀。(“sawCar logCar); 秀。(“sawCar”功能(使){ var颜色=(“红”、“蓝”、“黑”、“粉红色”,“绿色”); var=颜色(Math.floor (math . random () * 3)]; logColorCar(制作,颜色); }); show.seeCar(“法拉利”); show.seeCar(“保时捷”); show.seeCar(“布加迪”); >之前<强>在回调中实现闭包强>
如果某个回调函数需要访问父函数的作用域的变量,就需要使用闭包,在函数块内部封装一个异步调用,并传入所需要的变量。
回调函数logCar (logMsg) { 的过程。nextTick(函数(){ 回调(logMsg); }); } 汽车var=["猎豹”、“捷达”、“朗逸”); (var idx的汽车){ var味精="看见" +汽车(idx); logCar(味精、函数(){ 控制台。日志(“正常回调”+味精); }); } (var idx的汽车){ var味精="看见" +汽车(idx); (函数(味精){ logCar(味精、函数(){ 控制台。关闭日志(“回调”+味精); }) })(味精); }//正常回调了朗逸//正常回调了朗逸//正常回调了朗逸//关闭调看见一个猎豹//关闭调看见一个捷达//关闭回调了朗逸 >之前<>强链式回调强>
使用异步函数时,如果两个函数都在事件队列上,则无法保证它们的运行顺序。解决方法是让来自异步函数的回调再次调用该函数,直到没有更多的工作要做,以执行链式回调。
logCar(车,回调函数){ 控制台。日志(“看见一个% $”、汽车); 如果(cars.length) { 的过程。nextTick(函数(){ 回调(); }); } } 函数logCars(汽车){ var车=cars.pop (); logCar(汽车、函数(){ logCars(汽车); }); } 汽车var=["猎豹”、“捷达”、“朗逸”); logCars(汽车); >之前希望本文所述对大家nodejs程序设计有所帮助。
node . js实现回调的方法示例