這是一個不同的問題,我無法爲此獲得解決方案,請不要將其標記爲重複。如何使用nodejs異步模塊?
我無法在函數外部訪問變量op。我應該使用nodjes的異步模塊嗎? 我有兩個console.logs。但只有在函數日誌裏纔有效。
我試過其他問題的答案。它仍然是不工作
var http = require('http');
console.log("hi")
var options = {
host: 'api.usergrid.com',
path: '/siddharth1/sandbox/restaurants'
};
var op = []; //declaring outside function
var req = http.get(options, function(res) {
// Buffer the body entirely for processing as a whole.
var bodyChunks = [];
res.on('data', function(chunk) {
// You can process streamed parts here...
bodyChunks.push(chunk);
}).on('end', function() {
var body = Buffer.concat(bodyChunks);
// ...and/or process the entire body here.
var body2 = JSON.parse(body);
op = body2.entities.map(function(item) {
return item.name;
});
console.log(op); // only this works
})
});
req.on('error', function(e) {
console.log('ERROR: ' + e.message);
});
console.log("outside function " + op); //this doesnt work
console.log('Server listening on port 80');
不起作用的console.log不起作用,因爲它在從服務器返回回調之前執行得很好。這裏真正的問題是爲什麼你需要看看回調之外的價值?在討論使用異步之前,先回答一下。 –