2017-02-24 61 views
0

我不知道如何从函数内部的函数获取数据回调/返回值。javascript/node.js函数内函数的回调数据

我想将processData函数中的已处理数据作为回调函数传递,并返回此bufferData作为输入的其他函数。此时,bufferData函数不能从processData函数返回,因为它是从遍历函数调用的。代码如下:

function processData(obj, key, value){ 
    var newobj=obj[key][0]; 
    obj[key].push(newobj); 
    fs.readFile(__dirname + '/' + inFile, 'utf8', function(err, res) { 
     if (err) return console.log(err); 
      var data = JSON.parse(res); 
      data.key=obj; 
      bufferData=JSON.stringify(data); 
      **callback(bufferData);** (not sure how to code it to return this bufferData) 
}); } 

function traverse(obj, func) { 
    for (var key in obj) { 
    func(obj, key, obj[key]); 
    if (obj[key] !== null && typeof(obj[key])=="object") { 
     traverse(obj[key], func); 
    }  
} } 

traverse(data, processData); 
+0

它不太清楚你想用它做什么。我最初的问题是什么'回调(..)',因为他不是你的代码片段的一部分。你能解释一下你想达到的目标吗?你也应该知道的是'rs.readFile'异步读取文件的全部内容,因此你的'遍历'将继续执行,*不*等待'readFile'完成。 – Nico

+0

Hi @Nico,我为这个问题添加了更多信息,我想遍历一个json文件并处理这个文件中的数据,然后将新的处理过的json传递给另一个函数。 –

回答

1

从回调中返回任何数据确实没有意义。

您可以将回调函数添加到processData,然后在readFile的回调中调用它。

否则,您可以使用fs.readFileSync,这样您就可以同步获取文件数据。

+0

我是javascript新手,能否提供一个代码片段? –