2017-01-16 107 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