node.js - tutorial - ¿Por qué esperar no está funcionando para el módulo de solicitud de nodo?
sistema operativo para node js (3)
Prueba con el siguiente paquete NPM
var url = "http://www.google.com";
try
{
const response = await fetch(url);
const json = await response.json();
return {message:json.message,status:json.type};
}
catch(error)
{
console.log(error);
}
Espero que funcione.
Soy nuevo en nodejs. No veo la respuesta en el ejemplo 1, pero veo en el ejemplo 2. ¿Por qué? Espera trabajos para mí en otros lugares, usando babel.
Ex 1
let res = await request(url)
console.log(res);
console.log(res.body);
Ex 2
request(url, function (error, res, body) {
if (!error && response.statusCode == 200) {
console.log(body)
}
});
Esperar trabajos en otros lugares, estoy usando babel y los módulos necesarios para las funciones de es6 y es7. Por ejemplo, aguarda trabajos en llamada de squelize, he validado. Pero no funciona para solicitud de llamada. ¿Por qué?
Solo debes await
en algo que devuelve una Promesa. Definitivamente recomendaría leer Promesas antes de comenzar a trabajar con async
y await
. Probablemente pueda hacer que este ejemplo funcione al crear su propia función de envoltura alrededor de la request
para hacer que devuelva una promesa, como:
function doRequest(url) {
return new Promise(function (resolve, reject) {
request(url, function (error, res, body) {
if (!error && res.statusCode == 200) {
resolve(body);
} else {
reject(error);
}
});
});
}
// Usage:
async function main() {
let res = await doRequest(url);
console.log(res);
}
main();
Edición: de forma alternativa, puede considerar el uso de request-promise lugar del módulo de solicitud regular.
ES6
Uso: Donde la request
es require(''./await-request'')
const init = async () => {
try {
const result = await request({
uri: ''statdirectory/exchange?json'',
baseUrl: ''https://bank.gov.ua/NBUStatService/v1/'',
json: true
})
console.log(result)
}
catch (err) {
console.error(err)
}
}
Código:
// request-service.js
const request = require(''request'')
module.exports = async (value) =>
new Promise((resolve, reject) => {
request(value, (error, response, data) => {
if(error) reject(error)
else resolve(data)
})
})