Javascript node.js是否传递回调?
目前正在工作:Javascript node.js是否传递回调?,javascript,node.js,Javascript,Node.js,目前正在工作: function getAccessToken ( callback ) { request({ uri: oauth2_url, method: 'POST', form: { grant_type: 'password', client_id: client_id, client_secret: client_secret,
function getAccessToken ( callback ) {
request({
uri: oauth2_url,
method: 'POST',
form: {
grant_type: 'password',
client_id: client_id,
client_secret: client_secret,
username: username,
password: password
}
},
function tokenRequestResponse (error, response) {
if ( !error && response.statusCode == 200) {
// Send our data back to caller.
callback ( JSON.parse(response.body).access_token );
}
else {
console.log('Error: ' + response.statusCode);
}
});
}
我想要完成的是:
function tokenRequestResponse (error, response) {
if ( !error && response.statusCode == 200) {
callback ( JSON.parse(response.body).access_token );
}
else {
console.log('Error: ' + response.statusCode);
}
}
function getAccessToken ( callback ) {
request({
uri: oauth2_url,
method: 'POST',
form: {
grant_type: 'password',
client_id: client_id,
client_secret: client_secret,
username: username,
password: password
}
}, tokenRequestResponse });
}
我希望避免嵌套tokenRequestResponse(),除非这是使其与回调一起工作的唯一方法
它应当:
- 创建请求
- 收到响应后,检查错误
- 如果未找到错误,请将数据发送回getAccessToken()的调用方
这更像是一个学习Node.js异步的问题,我已经尝试了一些方法,并想请教一些专家。解决这个问题的最常用方法是返回一个函数,该函数关闭
回调
比如说:
function tokenRequestResponse(callback) {
return function (error, response) {
if ( !error && response.statusCode == 200) {
callback ( JSON.parse(response.body).access_token );
}
else {
console.log('Error: ' + response.statusCode);
}
}
}
function getAccessToken ( callback ) {
request({
uri: oauth2_url,
method: 'POST',
form: {
grant_type: 'password',
client_id: client_id,
client_secret: client_secret,
username: username,
password: password
}
}, tokenRequestResponse(callback));
}
然后你可以这样使用它:
function tokenRequestResponse(callback) {
return function (error, response) {
if ( !error && response.statusCode == 200) {
callback ( JSON.parse(response.body).access_token );
}
else {
console.log('Error: ' + response.statusCode);
}
}
}
function getAccessToken ( callback ) {
request({
uri: oauth2_url,
method: 'POST',
form: {
grant_type: 'password',
client_id: client_id,
client_secret: client_secret,
username: username,
password: password
}
}, tokenRequestResponse(callback));
}
当您调用tokenRequestResponse(callback)
时,该函数返回一个将用于请求的函数 您是否可以将回调函数添加到tokenRequestResponse调用中,如函数tokenRequestResponse(error,response)
I getReferenceError:error未定义
,我已尝试将回调添加为参数,但错误
,response
还必须传递参数才能确定响应的有效性。我不太明白您的确切意思。错误
和响应
参数已经通过。啊,我输入了一个错误,它正在工作。谢谢错误,响应“神奇地”传递是令人困惑的。JavaScript是一种函数式语言!返回函数太棒了!:)