跳到主要内容
CNode

nodejs异步执行问题

社区
Ddidiaoyu发布于 13 年前最后回复 13 年前
584860
我使用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)

D
didiaoyu#213 年前
引用 151263function getIps(url,callback){ var ips = ""; http.get(url, function(res){ var ipHtml = ""; res.o...

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

1
151263#113 年前
 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);
});

参与回复

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