[英]node.js pass a callback?
正在工作 :
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(),除非这是让它与回调一起工作的唯一方法。
这应该 :
这更像是一个学习Node.js的异步问题,我尝试了一些事情,并想到我会问一些专家。
解决此问题的最常见方法是返回一个关闭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)
该函数返回一个将用于request
回调的函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.