I'm mencoba untuk mendapatkan fungsi saya untuk kembali permintaan http mendapatkan, namun, apapun yang saya lakukan tampaknya tersesat dalam ?ruang lingkup?. I'm berhenti baru untuk Node.js sehingga setiap bantuan akan menghargai
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);
}
Tentu saja anda log kembali undefined
: anda log sebelum permintaan ini dilakukan. Masalah isn't lingkup tapi asynchronicity.
http.permintaan
adalah asynchronous, yang's mengapa dibutuhkan sebuah callback sebagai parameter. Lakukan apa yang harus anda lakukan dalam callback (salah satu yang anda lulus untuk respon.end
):
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();
dari learnyounode:
var http = require('http')
var bl = require('bl')
http.get(process.argv[2], function (response) {
response.pipe(bl(function (err, data) {
if (err)
return console.error(err)
data = data.toString()
console.log(data)
}))
})
Ini adalah solusi saya, meskipun pasti anda dapat menggunakan banyak modul yang memberikan anda objek seperti janji atau serupa. Lagi pula, anda yang hilang lain callback
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);
}
di tempat lain
getData(function(data){
// YOUR CODE HERE!!!
})
Saya pikir itu's terlalu terlambat untuk menjawab pertanyaan ini tapi saya dihadapkan dengan masalah yang sama baru-baru ini saya menggunakan kasus itu untuk memanggil paginasi JSON API dan mendapatkan semua data dari masing-masing pagination dan menambahkan ke array tunggal.
``javascript const https = require('https'); const apiUrl = "https://example.com/api/movies/search/?Title="; mari finaldata = []; mari someCallBack = function(data){ finaldata.push(...data); konsol.log(finaldata); }; const getData = function (substr, pageNo=1, someCallBack) {
mari actualUrl = apiUrl + ${substr}&page=${pageNo}
;
mari mydata = []
https.mendapatkan(actualUrl, (resp) => {
biarkan data = '';
resp.pada('data', (sepotong) => {
data += chunk;
});
resp.pada('end', async () => {
jika (JSON.mengurai(data).total_pages!==null){
pageNo+=1;
somCallBack(JSON.mengurai(data).data);
menanti getData(substr, pageNo, someCallBack);
}
});
}).pada("kesalahan", (err) => {
konsol.log("Kesalahan: " + err.pesan);
});
}
getData("spiderman", pageNo=1, someCallBack);
` Seperti @ackuser disebutkan kita dapat menggunakan modul lainnya tapi saya menggunakan kasus saya harus menggunakan node
https`. Berharap ini akan membantu orang lain.
Kerja sederhana Contoh Http request dengan menggunakan simpul.
`` const http = require('https')
httprequest().kemudian((data) => { const respon = { status: 200, tubuh: JSON.stringify(data), }; kembali respon; }); fungsi httprequest() { kembali Janji baru((menyelesaikan, menolak) => { const pilihan = { host: 'jsonplaceholder.typicode.com', path: '/todos', port: 443, metode: 'MENDAPATKAN' }; const req = http.permintaan(pilihan, (res) => { jika (res.statusCode < 200 || res.statusCode >= 300) { kembali menolak(new Error('status=' + res.statusCode)); } var tubuh = []; res.pada('data', fungsi(chunk) { tubuh.push(chunk); }); res.pada('end', function() { try { tubuh = JSON.mengurai(Penyangga.concat(tubuh).toString()); } catch(e) { menolak(e); } menyelesaikan(tubuh); }); }); req.pada('kesalahan', (e) => { menolak(e.pesan); }); // mengirim permintaan req.end(); }); } ``