在CoffeeScript中解析参数和匿名函数

Thi*_*eth 2 javascript facebook coffeescript

如何将此功能转换为兼容coffeescript的版本?

我的主要问题是fb.login ..但是我尝试我似乎总是失去其中一个参数或权限......

function promptLogin(login_level, callback)
{
    var cbk = callback;

    FB.login(function(response) {
        if (response.session) {
            if (response.perms) {
                cbk( true, response );
            } else {
                cbk( false, response );
                //showAlert( "Please accept the permissions.", 'Error' );
            }
        } else {
            cbk( false, response );
            //showAlert( "Please accept the permissions.", 'Error' );
        }
        }, {perms:'email,publish_stream'}
    );
}
Run Code Online (Sandbox Code Playgroud)

最感谢......

加雷思

编辑

感谢下面的所有答案,有些工作没有,有些导致我其他问题.

我已经确定了解决方案的混合搭配:

login: (permissions = '', callback) ->
    responseHandler = (response) ->

        if response.session
            if permissions && permissions != ''
                if permissions == response.perms
                    AP.log 'Login accepted - Permissions Accepted', response
                    callback true, response
                else
                    AP.log 'Login rejected - Permissions Rejected', response
                    callback false, response
            else
                AP.log 'Login accepted - No Permissions', response
                callback true, response                 
        else
            AP.log 'Login rejected', response
            callback false, response
        return

    FB.login responseHandler, perms: permissions
Run Code Online (Sandbox Code Playgroud)

谢谢所有回答的人.我希望这有助于其他人!

亲切的问候,

加雷思

bra*_*ing 7

当我抓住js片段并希望快速进行coffeescript转换时,我总是使用js2coffee.

http://ricostacruz.com/js2coffee/

promptLogin = (login_level, callback) ->
  cbk = callback
  FB.login (response) ->
    if response.session
      if response.perms
        cbk true, response
      else
        cbk false, response
    else
      cbk false, response
  , perms: "email,publish_stream"
Run Code Online (Sandbox Code Playgroud)

然后迭代显而易见的

promptLogin = (login_level, callback) ->
  cbk = callback
  FB.login (response) ->
    if response.session
      cbk response.perms, response
    else
      cbk false, response
  , perms: "email,publish_stream"
Run Code Online (Sandbox Code Playgroud)

然后再次

promptLogin = (login_level, callback) ->
  FB.login (response) ->
    if response.session
      callback response.perms, response
    else
      callback false, response
  , perms: "email,publish_stream"
Run Code Online (Sandbox Code Playgroud)

直到最后你得到

promptLogin = (login_level, callback) ->
  FB.login (response) ->
      callback
        if response.session then response.perms else false
        response
      , perms: "email,publish_stream"
Run Code Online (Sandbox Code Playgroud)