Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

131
Views
Quiero saber cómo puedo esperar a que una función de retorno envíe datos antes de ejecutar la siguiente línea de código.

Tengo un pequeño problema con mi código (Node.js). Quiero tener 2 archivos app.js y state.js, básicamente creé los dos para tratar de resolver el problema que tengo.

en el segundo archivo "State.js" tengo una función que devuelve un objeto y retrasé el retorno por 10 segundos (con la impresión de un Internet lento, etc.). y estoy tratando de recuperar el objeto en el archivo app.js. pero de momento no funciona. Intenté usar la promesa (async & await) pero eso devuelve un error en la terminal, también intenté ejecutar un setInterval para monitorear la variable i que usar para recuperar el objeto para ejecutar solo cuando tiene datos pero eso no funciona también. Por favor necesito ayuda lo antes posible.

A continuación se muestran los ejemplos de código para el escenario 2.

========================== archivo state.js =================== ====

 function test(val){ setTimeout(() => { return { code: 0, value: val } }, 10000); } module.exports = test;

========================== archivo app.js (usando el enfoque de promesa)============== ==============

 async function runNow(){ let v = await t('some string'); console.log(v.value) } runNow();

================================= app.js (usando el enfoque de intervalo) ======= ===

 function runNow(){ let engine = setInterval(() => { let v = t('some string'); if(v === null || v === undefined){ console.log(v); }else{ clearInterval(engine); console.log(v.value); } }, 5000); // console.log(v.value); } runNow();
about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Debe usar la promesa o la devolución de llamada para lograr lo que desea hacer aquí.

Si devuelvo algo de la función de callback de llamada de setTimeout(callback, time) , en realidad no lo devuelve la función setTimeout .

La implementación de setTimeout es probablemente similar a algo como esto.

 function setTimeout(callback, time, ...args) { // After the given time it executes the callback callback(...args); }

La implementación deseada de su archivo state.js sería como la siguiente:

 function testWithPromise(val) { return new Promise((resolve) => { setTimeout(() => { resolve({ code: 0, value: val, }); }, 5000); }); } function testWithCallback(val, callback) { setTimeout(() => { callback({ code: 0, value: val, }); }, 3000); } // export the function // use it in other modules as testWithCallback("callback_approach", console.log); testWithPromise("promise_approach").then(console.log); // or with an async function async function getValue() { const value = await testWithPromise("async_promise"); console.log(value); } //getValue();

about 4 years ago · Juan Pablo Isaza Report

0

Necesitas crear una promesa para que await la espere

Probar:

 function test(val) { return new Promise((resolve, reject) => { setTimeout(() => { resolve({code: 0, value: val}); }, 10000); }); } async function runNow() { let v = await test('someString'); console.log(v.value); }
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!