所以我有這個功能
app.post('/assignment/loan', (req, res) => {
在那個函式里面我有這個函式
db.run('SELECT loanable FROM book WHERE id=?',[bookID],(err,row)=>{
我使用 return 但它只退出內部函式并繼續其余部分。我想阻止整個 post 功能進一步執行。有沒有辦法做到這一點?
編輯:這里的完整代碼:https ://pastebin.com/8TPThfpW
先感謝您。
uj5u.com熱心網友回復:
不是直接的。當您的run回呼運行時,呼叫它的函式已經回傳。這是因為 JavaScript 的 run-to-completion 語意的本質以及這種型別的 Node.js 回呼被異步呼叫的事實。
您可能會考慮在這些函式周圍使用 Promise 包裝器,然后將您的邏輯放入一個async函式中,以便您可以使函式的邏輯等到run操作及其結果的處理完成。很難用這樣的零碎代碼給你一個具體的建議,但有點像這樣:
// 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...
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/435002.html
標籤:javascript 节点.js sqlite 表示
