2012-03-31 108 views
0

我是javascript新手,我现在需要一件小事。 我有这样的代码JavaScript函数数据处理

http.get(options, function(res) { 
    res.setEncoding('utf-8') 
    res.on('data', function (chunk) { 
     var parser = new xml2js.Parser(); 
     if(chunk.length < 50) { 
      console.log('end!'); 
     } else { 
      console.log(chunk); 
     } 
    }); 
}) 

而且我需要在代码的其余变量“块”来操作。我如何从功能中抛弃它? - stadart返回当然不会在这里工作。

回答

3

您可以将其设置为包含范围中的变量。

var ch; 
http.get(options, function(res) { 
    res.setEncoding('utf-8') 

    res.on('data', function (chunk) { 

    var parser = new xml2js.Parser(); 
    if(chunk.length < 50) { 
     ch = chunk; 
    } else { 
     console.log(chunk); 
    } 
}); 

然而,由于chunk是异步处理,由于AJAX请求,你很可能会通过调用回调中的方法最好还是继续你的程序。

http.get(options, function(res) { 
    res.setEncoding('utf-8') 

    res.on('data', function (chunk) { 
    var parser = new xml2js.Parser(); 
    if(chunk.length < 50) { 
     doSomethingWithChunk(chunk); 
    } else { 
     console.log(chunk); 
    } 
}); 

function doSomethingWithChunk(chunk) { 
    // rest of code here 
} 

编辑:

设置全局变量的NodeJS(这是推荐),那么你可以使用global对象:

GLOBAL.chunk = chunk; 

再次,这不应该是必要的,考虑改变你的代码,以便你不必使用全局变量。

+0

但变量ch仍然不可用功能内容!我想在整个代码中使用它! – yety 2012-03-31 10:21:14

+0

它是nodejs btw – yety 2012-03-31 10:23:10

+0

你没有在你的问题中指定nodejs。 – Jivings 2012-03-31 16:38:47