entonces tengo esta funcion
app.post('/assignment/loan', (req, res) => {Y dentro de esa función tengo esta función
db.run('SELECT loanable FROM book WHERE id=?',[bookID],(err,row)=>{Uso return pero solo sale de la función interna y continúa con el resto. Quiero evitar que toda la función de publicación se ejecute más. ¿Hay una manera de hacer eso?
Editar: código completo aquí: https://pastebin.com/8TPThfpW
Gracias de antemano.
No directamente. En el momento en que se run la devolución de llamada de ejecución, la función que la llamó ya ha regresado . Esto se debe a la naturaleza de la semántica de ejecución a finalización de JavaScript y al hecho de que las devoluciones de llamada de Node.js de este tipo se llaman de forma asincrónica.
Puede considerar usar contenedores de promesa alrededor de esas funciones y luego poner su lógica en una función async para que pueda hacer que la lógica de la función espere hasta que se complete la operación de run y el manejo de sus resultados. Es difícil darle una sugerencia concreta con un código tan fragmentario para trabajar, pero algo vagamente como esto:
// In an `async` function... const res = await promiseEnabledAppPost('/assignment/loan'); const row = await promiseEnabledDBRun('SELECT loanable FROM book WHERE id=?',[bookID]); // ...do something with `row`... if (/* you don't want to continue with the `post` callback logic */ { return; } // ...continue the logic from the `post` callback...