序
虽然上一篇解决了Node.js中异步方法全部执行完毕后再执行,但如果想让异步方法按顺序执行还是不行。
本篇用迭代的方式给出异步并发方法同步顺序执行的解决方案。
问题描述:
让异步并发方法同步顺序执行。
解决方案:
var request = require('request');
// 异步获取网络资源的方法
getWeb = (index, getCallback) => {
var url = 'http://www.duzixi.com';
request(url, function (error, response, body) {
if (!error && response.statusCode == 200)
{
getCallback(body);
return body;
} else {
console.log(response.statusCode + " " + error);
getCallback("");
return "";
}
})
}
// 定义迭代方法
function action(i) {
if (i == 10) { // 满足条件,结束迭代
console.log("All done!");
return;
} else {
getWeb(i, (body)=>{
console.log(i);
action(i + 1); // 迭代调用
})
}
}
// 从0开始调用迭代方法
action(0);