是否可以在兩個檔案之間使用閉包作為函式間 dto?
這是我的測驗代碼,我正在嘗試解決的想法,它也可能是錯誤的,因為我來自 Java 領域,dto 的思維方式在我身上做得很好,就是創建閉包(store.js ) 在我的應用程式檔案 (index.js) 中,讓該閉包存盤一些狀態,然后將此閉包加載到另一個檔案 (router.js) 中。
如果這是錯誤的,還有更好的方法嗎?我的目標是通過參考多個檔案來訪問 Request 物件,而不是可能將其作為函式引數傳遞。
store.js
store = function(request) {
let req = request
function getRequest(){
return req
}
return getRequest
}
module.exports = store;
index.js
var express = require('express');
var app = express();
var router = require('./router');
var store = require('./store')
app.use(function(request, response, next){
require('./store')(request)
next()
})
app.use('/', router);
app.listen(3001);
路由器.js
var express = require('express');
var router = express.Router();
router.get('/:id', function(req, res){
const store = require('./store');
res.send('store = ' store());
});
module.exports = router;
uj5u.com熱心網友回復:
您的代碼的作用可以這樣解釋:
require('./store') “是”一個函式,它需要一個請求物件。因此,您可以在 app.use 部分有效地呼叫它。
但是在 router.js 中,您仍然呼叫這個同樣需要請求物件的函式。它的作用類似于:let req = null。因為您在沒有請求物件的情況下呼叫它,所以它不會回傳任何內容。
你想要實作的是nodejs中沒有完全解決的問題(真的)。或者充其量對于我需要的每個包都不穩定。例如,這個概念對我來說從來沒有用過 npm mysql。因此完全阻止我使用它。保持穩定或消失:p
以下是有關如何有效創建商店的完整說明,就像您嘗試做的那樣。
https://www.freecodecamp.org/news/async-local-storage-nodejs/
也許最近情況有所好轉。如果你能做到,請 ping 我。
我嘗試了一些庫: continuation-local-storage cls-hooked async_hooks
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/414727.html
標籤:
上一篇:表達具有奇怪行為的方法
