node.js通过回调?

杰夫·B

正在工作 :

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异步问题,我尝试了一些事情,并想请教一些专家。

戴文·特伦

解决此问题的最常见方法是返回在上关闭的函数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回调的函数

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章