Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

85
Vistas
Asíncrono y en espera de retorno de implementación fallaron

La función de llamada llama a la función asíncrona wcNam2Uid2 para devolver un nombre. Luego, la persona que llama console.log el retorno (nombre).

La consola.log es:

 Enter nam2userid , input:Tommy Leung in main, resolve result : undefined result id :tommyleung nam2userid resolved , wc_id : tommyleung "

Mi main.js es:

 var express = require('express'); async function caller(snam) { //console.log(" main start with: "+ snam); const uid = await wcNam2Uid2(snam); console.log(" in main, resolve result : " + uid); } let wcname ="Tommy Leung"; caller(wcname);

El código en la función wcNam2Uid2

 async function wcNam2Uid2(wcname ) { //return data var myJson =""; var mysql = require('mysql'); var fs = require('fs'); var bodyParser = require('body-parser'); var mnam = wcname; console.log("Enter nam2userid , input:" + mnam ); //wcname; var con = mysql.createConnection({ host: "localhost", user: "root", password: "", database: "crm" }); // select leads by name con.connect(function(err) { if (err) throw err; con.query("SELECT wc_id FROM wcdirlist where name = '" + mnam + "' ", function (err, result, fields) { setTimeout(() => { if (err) throw err; console.log("result id :"+ result[0].wc_id); var wcid = result[0].wc_id; con.end; console.log(" nam2userid resolved , wc_id : " + wcid); return wcid; },2000); }); }); }

Los extractos del final son la preocupación (arriba se está ejecutando).

 console.log(" nam2userid resolved , wc_id : " + wcid); return wcid;

Como puede ver, la primera línea es buena, ya que se mostró correctamente en console.log, pero la siguiente línea "return wcid" falló.
La segunda línea en console.log donde la respuesta de la persona que llama a la función salió demasiado pronto es el problema, supongo que esperar no está funcionando.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Evitaría el tiempo de espera establecido y haría lo que hizo en la primera función, envolvería el código en la función asíncrona y esperaría el resultado

about 4 years ago · Juan Pablo Isaza Denunciar

0

Estudié dentro de stackflow y un artículo parecía la solución usando devolución de llamada. El enlace de devolución de llamada: Node.js que devuelve el resultado de la consulta MySQL

Mis codigos:

 function getwcid(uname, callback) { const mysql = require("mysql"); const con = mysql.createConnection({ host: "localhost", user: "root", password: "", database: "crm" }); con.query( "SELECT wc_id FROM wcdirlist WHERE name = '"+ uname +"'", function(err, result) { if (err) callback(err,null); else callback(null,result[0].wc_id); }); return } //call Fn for db query with callback getwcid("Tommy Leung", function(err,data){ if (err) { // error handling code goes here console.log("ERROR : ",err); } else { // code to execute on data retrieval console.log("result from db is : ",data); } }); return;

La consola.log:

 C:\Users\Lenovo\eclipse-workspace\.metadata\.plugins\org.eclipse.wildwebdeveloper.embedder.node\node-v14.15.4-win-x64\node.exe test_getwcid_3.js result from db is : tommyleung

La respuesta por devolución de llamada es muy simple y ¿alguien tiene una respuesta más corta por espera?

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda