Node.js的那些坑(四)——如何让异步并发方法同步顺序执行


虽然上一篇解决了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);


你可能感兴趣的:(JavaScript)