Node.js链式回调如何改写为长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计305个文字,预计阅读时间需要2分钟。
由于异步关系的存在,代码的书写顺序可能与执行顺序不同。例如,在OC中使用AFNetworking请求数据后刷新页面,因为网络请求是用block实现的,所以执行顺序可能是先执行B再执行A。
由于异步的关系,代码的书写顺序可能和执行顺序并不一样,可能想先执行A再执行B,但由于异步可能B要先于A执行.例如在OC中使用AFnetworking请求数据然后刷新页面,由于网络请求是用block实现的异步方法,所以刷新的时候并没有数据,为了解决这个问题,一般会在请求响应结束在block中刷新页面(这就回出现循环引用的问题,不过node中不会出现).
上面是OC中异步执行中的链式回调,在node.js中也是使用这样的方法在回调中调用方法来实现链式回调。
function logCar(car,callback) { console.log("Saw a %s",car); process.nextTick(callback); } function logCars(cars) { var car=cars.pop(); if (cars.length) { logCar(car,function(){ logCars(cars);; }); } } var cars = ["Ferrari", "Porsche", "Bugatti", "Lamborghini", "Aston Martin"]; logCars(cars);
输出结果:
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe callback_chain.js
Saw a Aston Martin
Saw a Lamborghini
Saw a Bugatti
Saw a PorscheProcess finished with exit code 0
到此这篇关于Node.js实现链式回调的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易盾网络。
本文共计305个文字,预计阅读时间需要2分钟。
由于异步关系的存在,代码的书写顺序可能与执行顺序不同。例如,在OC中使用AFNetworking请求数据后刷新页面,因为网络请求是用block实现的,所以执行顺序可能是先执行B再执行A。
由于异步的关系,代码的书写顺序可能和执行顺序并不一样,可能想先执行A再执行B,但由于异步可能B要先于A执行.例如在OC中使用AFnetworking请求数据然后刷新页面,由于网络请求是用block实现的异步方法,所以刷新的时候并没有数据,为了解决这个问题,一般会在请求响应结束在block中刷新页面(这就回出现循环引用的问题,不过node中不会出现).
上面是OC中异步执行中的链式回调,在node.js中也是使用这样的方法在回调中调用方法来实现链式回调。
function logCar(car,callback) { console.log("Saw a %s",car); process.nextTick(callback); } function logCars(cars) { var car=cars.pop(); if (cars.length) { logCar(car,function(){ logCars(cars);; }); } } var cars = ["Ferrari", "Porsche", "Bugatti", "Lamborghini", "Aston Martin"]; logCars(cars);
输出结果:
"C:\Program Files (x86)\JetBrains\WebStorm 11.0.3\bin\runnerw.exe" F:\nodejs\node.exe callback_chain.js
Saw a Aston Martin
Saw a Lamborghini
Saw a Bugatti
Saw a PorscheProcess finished with exit code 0
到此这篇关于Node.js实现链式回调的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

