javascript - nodejs - ¿Por qué no request.on() trabaja en Node.js
stream javascript (2)
Funciona exactamente de la manera que explicaste. Tal vez el problema al que se enfrenta es debido a la naturaleza asincrónica de node.js. Estoy bastante seguro de que estás llamando a tu getData()
de forma síncrona. Pruebe esto y vea si su llamada de request
no está devolviendo algo:
request(''someurl'')
.on(''data'', function(data){
console.log(data.toString());
.on(''end'', function(){
console.log("This is the end...");
});
Eche un vistazo a este artículo aquí . No es corto, pero explica cómo escribir tu código para tratar este tipo de situación.
Estoy tratando de obtener algunos datos de un servicio de terceros utilizando el módulo de solicitud de nodo y devolver estos datos como una cadena desde una función. Mi percepción era que request()
devuelve una secuencia de lectura ya que puedes hacer request(...).pipe(writeableStream)
que, pensé, implica que puedo hacer
function getData(){
var string;
request(''someurl'')
.on(''data'', function(data){
string += data;
})
.on(''end'', function(){
return string;
});
}
pero esto realmente no funciona. Creo que tengo una percepción errónea de cómo request () o las transmisiones de nodos realmente funcionan. ¿Alguien puede aclarar mi confusión aquí?
Lo que obtengo es que desea acceder a la string
más tarde y pensó que la request
devolvería una cadena completa. Si es así, no puedes hacerlo sincrónicamente, tienes que poner tu código para procesar la string
completa en el controlador de eventos end
esta manera:
function getData(){
var string;
request(''someurl'')
.on(''data'', function(data){
string += data;
})
.on(''end'', function(){
processString(string);
});
}
getData();