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

201
Vistas
La función de devolución de llamada de Node.JS no se está ejecutando

settopending(f,fb) es la primera función llamada, no estoy seguro si no escribí las devoluciones de llamada correctamente porque applytransaction(t,f,fb) nunca se llama. Se imprime "Primero" y "Segundo", pero no se imprimen "Tercero" y "Cuarto". ¿Configuré incorrectamente la devolución de llamada que se supone que debe llamar a applytransaction(t,f,fb) o hay algo más que sea el problema?

 function update(document,f,fb) { this.transactions.update( { _id: document._id, state: "initial" }, { $set: {state: "pending"}, $currentDate: {lastModified: true} } ); console.log("Second") } function settopending(f,fb) { console.log("First"); var t = this.transactions.findOne( { state: "initial" } , function(err, document) {//CALLBACK update(document,f,fb , function(err, document) {//CALLBACK console.log("Third"); applytransaction(document,f,fb); }); }); } function applytransaction(t,f,fb) { console.log("Fourth"); x=fb(t.value); y=f(t.value); this.model.update( { _id: t.source, pendingTransactions: { $ne: t._id } }, { $inc: { bal:x }, $push: { pendingTransactions: t._id } } ); this.model.update( { _id: t.destination, pendingTransactions: { $ne: t._id } }, { $inc: { bal: y }, $push: { pendingTransactions: t._id } } ) }
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

como pura suposición, si this.transactions.update acepta una devolución de llamada

 function update(document, f, fb, cb) { // added cb parameter this.transactions.update({ _id: document._id, state: "initial" }, { $set: {state: "pending"}, $currentDate: {lastModified: true} }, cb // added cb argument ); console.log("Second") }

aunque, como f y fb no son necesarios para la actualización

 function update(document, cb) { this.transactions.update({ _id: document._id, state: "initial" }, { $set: {state: "pending"}, $currentDate: {lastModified: true} }, cb ); console.log("Second") } function settopending(f,fb) { console.log("First"); var t = this.transactions.findOne( { state: "initial" } , function(err, document) {//CALLBACK update(document, function(err, document) {//CALLBACK console.log("Third"); applytransaction(document,f,fb); }); }); }

tiene más sentido

over 4 years ago · Santiago Trujillo Denunciar

0

El problema es con su método de actualización. No está llamando al fb (método de devolución de llamada en cualquier lugar). después de esta operación "this.transactions.update", el método se supera sin llamar a la función de devolución de llamada pasada.

agregue una llamada de función después de eso: fb(err,document);

 function update(document,f,fb) { this.transactions.update( { _id: document._id, state: "initial" }, { $set: {state: "pending"}, $currentDate: {lastModified: true} } ); console.log("Second") }

En su mayoría, este "this.transactions.update" también esperaría un método callabck. Necesitas poner tu lógica allí como a continuación:

 function update(document,f,fb){ this.transactions.update( { _id: document._id, state: "initial" }, { $set: {state: "pending"}, $currentDate: {lastModified: true} },function(err,doc){ if(err){ fb(err,null) }else{ fb(null,doc) } } ); console.log("Second")

}

over 4 years ago · Santiago Trujillo Denunciar

0

function update(document,f,fb, callback) { this.transactions.update( { _id: document._id, state: "initial" }, { $set: {state: "pending"}, $currentDate: {lastModified: true} }, callback(); ); console.log("Second") }

También debe tener el parámetro de devolución de llamada en esta función y luego enviar la devolución de llamada () cuando finalice la transacción.

over 4 years ago · Santiago Trujillo 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