0
我對ES本身很陌生,想知道爲什麼我無法將ServerResponse對象正確綁定到函數。 我已經得到了使用OAuth協議一個非常簡單的服務器:將ServerResponse對象綁定到函數
let saveToken = (response) =>
{
console.log('\n')
console.log(this.constructor) // NOT OK [Function: Object]
this.writeHead(200,
{
'Set-Cookie': `${ACCES_TOKEN_COOKIE}=${JSON.parse(response.body).access_token}`
})
this.send(body)
}
let requestToken = (code) =>
{
console.log('\n')
console.log(this.constructor) // NOT OK [Function: Object]
unirest.post(OAUTH_ACCESS_URL)
.send({
client_id: CLIENT_ID,
client_secret: CLIENT_SECRET,
code: code,
redirect_uri: REDIRECT_URI
})
.end(saveToken.bind(this))
}
let requestsHandler = (request, response) =>
{
console.log('\n')
console.log(response.constructor) // OK { [Function: ServerResponse] }
let QUERY = url.parse(request.url, true).query;
if ('code' in QUERY)
{
requestToken.bind(response)(QUERY.code)
} else
{
fs.readFile(INDEX_PAGE_PATH,
'utf8',
(err, contents) =>
{
response.send(contents)
})
}
}
let app = express()
app.get('/', requestsHandler)
app.listen(PORT,
() =>
{
console.log(`Server listening on :${PORT}`)
})
在這裏,我想結合內requestsHandler
ServerResponse
對象(response
),以requestToken
但好像我做錯了什麼,因爲this
變只要requestToken
被調用,一個普通的Object
。 我在做什麼錯?
代替'requestToken.bind(響應)(QUERY.code)''確實requestToken.call(響應,QUERY。代碼)'工作? –
另外,是否有任何理由不能將服務器響應作爲參數傳遞而不是嘗試綁定它? –
我發現'unirest'使用的'request'模塊將其他對象綁定到它的例程中的回調函數 –