2017-08-11 101 views
-2

出於某種原因,在我的陣列中的數據在函數結束迷路儘管它是對外宣稱:節點陣列迷路

var resultsArray = []; 
 
res.on('end', function() { 
 
    var parsed = body.split('\n'); 
 

 
    var i; 
 
    for (i = 0; i < parsed.length; i++) { 
 
    resultsArray.push(parsed[i].split(',')); 
 
    } 
 

 
}); 
 
console.log(`\n \n---------\n${resultsArray} \n--------\n \n`);

這將打印


undefined


但如果我移動res.on函數內的console.log語句,我得到了我期望的數組。

+2

它不會丟失。回調是異步的,並且在登錄到控制檯時未觸發。 –

+0

啊,你是對的,我沒有想到這一點。謝謝! – TLET

回答

0

在你的情況,你需要使用javascript callback內varible:

res.on('end', function() { 
    var parsed = body.split('\n'); 

    var i; 
    for (i = 0; i < parsed.length; i++) { 
    resultsArray.push(parsed[i].split(',')); 
    } 

    // Use your value from here. 
    console.log(`\n \n---------\n${resultsArray} \n--------\n \n`); 
}); 

如果你想避免callback hell,寫更清晰的代碼,給它上async/await一試。