我剛剛發現當幾乎同時觸發 2 個請求時,我的 API 正在做一些奇怪的事情。我發現問題是我在下面的“用戶”變量之前缺少“var”聲明,但我真的很好奇導致下面描述的錯誤的根本問題:我有兩個 API 端點調用相同的函數,如下所示:router.get('/refresh_session_token', function (req, res) { let user_id = req.body.user_id // The value sent is 8 findUserWithId(user_id) .then(user_data => { user = user_data // I forgot 'var' here }) .then(() => { console.log(user) // This should always show user data from user_id = 8 })}router.get('/resend_invite', function (req, res) { let user_id = req.body.user_id // The value sent is 18 findUserWithId(user_id) .then(user_data => { user = user_data // I forgot 'var' here }) .then(() => { console.log(user) // This should always show user data from user_id = 18 })}const findUserWithId = (id) => { return knex.raw(`SELECT * FROM users WHERE id = ?`, [id]).then((data) => data.rows[0])}所有這些代碼都在我通過 module.exports = router; 導出的同一個文件中我發現,如果我幾乎同時觸發端點/refresh_session_token和/resend_invite,每個端點都有兩個不同的 user_id,有時我的 console.log 會返回相同的結果,就好像我使用相同的 user_id 一樣。向用戶添加 var 解決了這個問題,但我對后臺實際發生的事情感到非常驚訝。你有什么主意嗎?
用 promises 和 undefined var 理解奇怪的錯誤
蝴蝶刀刀
2022-10-08 15:04:46
