Coffeescript承诺多行语法

时间:2015-04-30 07:36:15

标签: coffeescript

我在Coffeescript中有这段代码:

  @update().success((company)=>
    ).error((company)=>
    ).finally((company)=>
    )

我想知道是否可以更改以删除一些括号。像这样:

  @update()
    .success (company)=>
    .error (company)=>
    .finally (company)=>

但我总是得到SyntaxError: [stdin]:18:9: unexpected .。知道我做错了吗?

感谢。

4 个答案:

答案 0 :(得分:3)

仅仅因为你可以使用匿名函数并不意味着你必须这样做。将函数排除在外并给出它们的名称通常会使代码更清晰,更易于阅读,并且空白更少。

例如:

frobnicate_the_things = => # some pile of logic goes here
complain_about_the_problems = => # and another pile here
clean_up_the_mess = => # and yet another here

@update()
  .success frobnicate_the_things
  .error complain_about_the_problems
  .finally clean_up_the_mess

当然我不知道你的回调实际上是做什么的,所以我不得不弥补一些愚蠢的名字,但这不是重点。关键是你有很好的自我记录代码,没有一堆摆弄语法和空格。

答案 1 :(得分:2)

如果你愿意忍受分号:

 @update()
   .success (company)=>;
   .error (company)=>;
   .finally (company)=>;

答案 2 :(得分:1)

只要您填写函数体,该语法就可以正常工作:

@update()
  .success (company) => true
  .error (company) => true
  .finally (company) => true

否则你必须清楚地描述回调函数:

@update()
  .success ((company) =>)
  .error ((company) =>)
  .finally ((company) =>)

但话说回来,你首先不会写一个空回调。

答案 3 :(得分:0)

你快到了,你只是忘了添加return声明:

@update()
  .success (company)=> 
     return
  .error (company)=>
     return
  .finally (company)=>
     return