Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

199
Visualizações
función de llamada dentro de otra función javascript

por qué este InsertToDataBase.insertdatatolamp0(1,1); inserte el elemento en la base de datos pero el primero InsertToDataBase.insertdatatolamp0(0,0); No.

por favor alguna solución para ejecutar InsertToDataBase.insertdatatolamp0(0,0);

principal.js

 const axios = require('axios') const InsertToDataBase = require("./InsertToDataBase"); const username = 'admin' const password = 'admin' const token = Buffer.from(`${username}:${password}`, 'utf8').toString('base64') const urlLAMP_0 = 'http://127.0.0.1:8282/~/mn-cse/mn-name/LAMP_0/DATA/la' function getDataLAMP_0(){ axios.get(urlLAMP_0, { headers: { 'Authorization': `Basic ${token}`, 'Accept': 'application/json', 'mode': 'cors', 'credentials': 'include', } }) .then(function(response) { document.getElementById("rn0").textContent = response.data['m2m:cin'].rn; document.getElementById("ty0").textContent = response.data['m2m:cin'].ty; }) .then((response) => { var rn0 = response.data["m2m:cin"].rn; var ty0 = response.data["m2m:cin"].ty; InsertToDataBase.insertdatatolamp0(0,0); }); } InsertToDataBase.insertdatatolamp0(1,1); getDataLAMP_0();

Insertar en la base de datos.js

 const {Client} = require('pg') const client = new Client({ user:"postgres", password:"admin", host:"localhost", port:"5432", database:"postgres", }) function insertdatatolamp0(rn0,ty0){ client.connect() .then(()=>console.log("connected successfuly")) .then(()=>client.query("insert into lamp0 values ($1,$2)",[rn0,ty0])) .catch(e=> console.log(e)) .finally(()=> client.end()) } module.exports = { insertdatatolamp0 };
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

En una cadena de promesa, cada paso espera que el paso anterior devuelva el resultado.

En su cadena de promesas, este paso:

 .then(function(response) { document.getElementById("rn0").textContent = response.data['m2m:cin'].rn; document.getElementById("ty0").textContent = response.data['m2m:cin'].ty; })

no devuelve nada, lo que significa que devuelve undefined . Por lo tanto, el siguiente paso en la cadena obtiene esa respuesta:

 .then((response) => { // response here is undefined var rn0 = response.data["m2m:cin"].rn; var ty0 = response.data["m2m:cin"].ty; InsertToDataBase.insertdatatolamp0(0,0); });

Para que funcione como se espera, cambie el paso anterior a:

 .then(function(response) { document.getElementById("rn0").textContent = response.data['m2m:cin'].rn; document.getElementById("ty0").textContent = response.data['m2m:cin'].ty; return response; })

Nota al margen: aunque InsertToDataBase.insertdatatolamp0(0,0); está más arriba en el código, no debe referirse a él como "el primero" . Debido a que está envuelto en una Promise() , en realidad se ejecutará más tarde, cuando se resuelva la promesa. Mientras que InsertToDataBase.insertdatatolamp0(1,1); será el primero que se ejecute.

about 4 years ago · Juan Pablo Isaza Relatório

0

¿Ves el resultado de tu llamada?

 axios.get(urlLAMP_0, { headers: { 'Authorization': `Basic ${token}`, 'Accept': 'application/json', 'mode': 'cors', 'credentials': 'include', } })

en la pestaña Redes de su navegador?

La cadena .then() funciona solo si su promesa inicial tiene éxito. Si sus solicitudes se bloquean mientras están en estado de espera o fallan, la cadena nunca continúa.

Además, hay un problema más adelante en su cadena.

 .then(function(response) { document.getElementById("rn0").textContent = response.data['m2m:cin'].rn; document.getElementById("ty0").textContent = response.data['m2m:cin'].ty; }) .then((response) => { var rn0 = response.data["m2m:cin"].rn; var ty0 = response.data["m2m:cin"].ty; InsertToDataBase.insertdatatolamp0(0,0); });

La response en la primera función es el resultado de la promesa axios.get(). Pero como su primer .then() no devuelve nada (debería devolver una promesa o algún valor), se trata como su función que devuelve undefined de forma predeterminada, por lo que el segundo .then(response => ...) obtendrá una respuesta indefinida.

Tienes dos opciones.

  1. Devuelva la response como resultado de su primer .then() o
  2. Combine las cláusulas first y second .then() en una función.

2 es más limpio y mejor, debe usar varios .then() si solo devuelve Promise en cada uno de ellos para avanzar o necesita alguna condición, como:

 return axios.get(something) .then(response => { if (response.a) return axios.get(somethingElse) else return response }) .then(response => { // here we have either initial response or response from the next get })

Eso no está relacionado directamente con su pregunta, pero es un error.

about 4 years ago · Juan Pablo Isaza Relatório

0

En este momento, está "encadenando" la inserción de los datos usando una serie de declaraciones .then() .

Sin embargo, no está pasando la respuesta a través de esta cadena de llamadas .then , lo que podría ser su problema.

Al escribir promesas en Javascript, también debe tratar de manejar sus errores. Eso le dará más información sobre lo que podría estar saliendo mal, de lo contrario, Javascript generará un error de excepción no detectado y será difícil de depurar.

He agregado algunas líneas de código a su archivo main.js , que con suerte lo orientarán en la dirección correcta.

 const axios = require('axios') const InsertToDataBase = require("./InsertToDataBase"); const username = 'admin' const password = 'admin' const token = Buffer.from(`${username}:${password}`, 'utf8').toString('base64') const urlLAMP_0 = 'http://127.0.0.1:8282/~/mn-cse/mn-name/LAMP_0/DATA/la' function getDataLAMP_0(){ axios.get(urlLAMP_0, { headers: { 'Authorization': `Basic ${token}`, 'Accept': 'application/json', 'mode': 'cors', 'credentials': 'include', } }) .then(function(response) { document.getElementById("rn0").textContent = response.data['m2m:cin'].rn; document.getElementById("ty0").textContent = response.data['m2m:cin'].ty; return response; // You must return the response here.... }) .then((response) => { // In order to get access to it here... // If you try to access response.data (where response === undefined) you will get an error! That may be happening, but you weren't handling the error. var rn0 = response.data["m2m:cin"].rn; var ty0 = response.data["m2m:cin"].ty; return InsertToDataBase.insertdatatolamp0(0,0); }) .then(() => { console.log("SUCCESS"); }) .catch((err) => { // And handle your error case! console.error(err); }); } getDataLAMP_0();
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda