2017-01-16 104 views
0

我想使用回调函数从远程CSV文件读取一些信息。不知道,究竟如何做到这一点。从Node.js函数返回数组

功能:

function getRoomsFromCSV(allRoomsArray) { 
    var request = require('request'); 
    request('http://localhost:3333/rooms.csv', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
... 
     allRoomsText = allRoomsText.substr(0,allRoomsText.length-1) + ']}'; 
     var allRoomsArray = JSON.parse(allRoomsText); 
    } 
}) 
} 

我想通过结果数组调用函数和循环。

var rooms = []; 
getRoomsFromCSV(function (rooms) { 
    for(var i = 0; i < rooms.length; i++) { 
     console.log("i:",i); 
    } 

但是,for循环永远不会被调用,结果(空间)似乎是空的。

+0

您正在重新声明'var allRoomsArray' –

回答

1

尝试这样

function getRoomsFromCSV(allRoomsArray) { 
    var request = require('request'); 
    request('http://localhost:3333/rooms.csv', function (error, response, body) { 
    if (!error && response.statusCode == 200) { 
... 
     allRoomsText = allRoomsText.substr(0,allRoomsText.length-1) + ']}'; 
     allRoomsArray(JSON.parse(allRoomsText)); //response params to callback 
    } 
}) 
} 

您发送回调来检索响应。所以在async函数内调用该回调函数

+0

thx,就是这样!然而,rooms.length是未定义的,尽管当我在调试器中观察房间变量时它有一个值 – jpsstack