CNode

nodejs异步执行问题

Ddidiaoyu发布于13 年前最后回复13 年前5 回复8453 浏览0 收藏
我使用nodejs碰到了一个异步的问题,如下方法,去某个网页获取页面上的ip地址,并返回

function getIps(url){
var ips = "";
http.get(url, function(res){
	var ipHtml = "";
	res.on("data", function(d){
		ipHtml += d;
	});
	res.on("end", function(){
		var reg = /[0-9]{1,3}(\.[0-9]{1,3}){3}/gim;
		ips = ipHtml.match(reg);
		return ips;
	});
});
};

但是调用var ip = getIps(url); 一直返回undefined, 因为返回值的时候res.on里的代码还没执行完,所以造成这个结果, 请问如何才能把正确的ips返回!谢谢!

查看回复

回复 (5)

1
151263#1·13 年前
 function getIps(url,callback){
    var ips = "";
    http.get(url, function(res){
        var ipHtml = "";
        res.on("data", function(d){
            ipHtml += d;
        });
        res.on("end", function(){
            var reg = /[0-9]{1,3}(\.[0-9]{1,3}){3}/gim;
            ips = ipHtml.match(reg);
            callback(ips);
            //return ips;
        });
    });
 };
getIps("http://127.0.0.1:8080",function(ips){
    console.log(ips);
});
D
didiaoyu#2·13 年前
引用 151263function getIps(url,callback){ var ips = ""; http.get(url, function(res){ var ipHtml = ""; res.o...

嗯,谢谢,暂时只能这样了! 我本来事项把ips当做变量返回的,也没别的好办法!

参与回复
登录后即可参与回复。登录