2016-09-13 88 views
-1

每次使用承諾時,我發現很難做function ***(req, res){ ... }。因此,我不得不做頂的想法,參考對象,而不是,ReqRes跨功能使用req&res

let Req; 
let Res; 

// i can also do "const { username } = Req.body" to make "username" avaliable to all functions 

function promise() { return Promise.resolve(); } 
function promise2() { Res.send('test'); } 

module.exports = (req, res, next) => { 
Req = req 
Res = res 
return promise().then(() => promise2()); 
} 

你有什麼想法就這樣,利弊? 如果這是反模式讓我知道並建議一個首選的方式。

感謝

+0

你不想做這個。您正在制定一個高度範圍的資源,將其提升到全球範圍,這個範圍將經常發生變化。 –

+0

@SterlingArcher請澄清「哪些頻繁變化」 – Antartica

+0

全局變量是一個非常糟糕的主意。 – Bergi

回答

1

而不必每次的承諾與REQ和資源來解決(需要在一個單一的對象,因爲你只能解決一件事)。

你可以使用這種模式。

function promise1(req, res) { 
    req.whatever = '';   // will be available in future promises 
    return Promise.resolve(foo); // you don't need to resolve req and res 
} 

function promise2(req, res) { 
    return function (foo) { 
    // whatever promise1 resolved to, will be here :) 
    res.send('test'); 
    } 
} 

module.exports = (req, res, next) => { 
    return promise1(req, res) 
    .then(promise2(req, res)); 
} 

在這種情況下,你是不是你的吊裝REQ和RES變量在你的模塊在全球範圍(你真的不需要它是在這種情況下全球)