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

84
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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