Fonksiyonumun http get isteğini döndürmesini sağlamaya çalışıyorum, ancak ne yaparsam yapayım ?scope? içinde kayboluyor gibi görünüyor. Node.js'de yeniyim, bu yüzden herhangi bir yardım takdir edilecektir
function getData(){
var http = require('http');
var str = '';
var options = {
host: 'www.random.org',
path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
};
callback = function(response) {
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
console.log(str);
});
//return str;
}
var req = http.request(options, callback).end();
// These just return undefined and empty
console.log(req.data);
console.log(str);
}
Elbette günlükleriniz undefined
döndürür: istek tamamlanmadan önce günlüğe kaydedersiniz. Sorun kapsam değil eşzamanlılıktır.
http.requestasenkrondur, bu yüzden parametre olarak bir geri arama alır. Geri aramada yapmanız gerekeni yapın (
response.end`e aktardığınız):
callback = function(response) {
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
console.log(req.data);
console.log(str);
// your code here if you want to use the results !
});
}
var req = http.request(options, callback).end();
learnyounode'dan:
var http = require('http')
http.get(options, function (response) {
response.setEncoding('utf8')
response.on('data', console.log)
response.on('error', console.error)
})
'options' ana bilgisayar/yol değişkenidir
Bu benim çözümüm, ancak elbette nesneyi size bir söz veya benzeri olarak veren birçok modül kullanabilirsiniz. Her neyse, başka bir geri çağırmayı kaçırıyordunuz
function getData(callbackData){
var http = require('http');
var str = '';
var options = {
host: 'www.random.org',
path: '/integers/?num=1&min=1&max=10&col=1&base=10&format=plain&rnd=new'
};
callback = function(response) {
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
console.log(str);
callbackData(str);
});
//return str;
}
var req = http.request(options, callback).end();
// These just return undefined and empty
console.log(req.data);
console.log(str);
}
başka bir yerde
getData(function(data){
// YOUR CODE HERE!!!
})