jquery惯用语从循环中早期返回

时间:2013-09-14 01:21:20

标签: javascript jquery coffeescript scope return

我发现自己多次写这篇文章:

{ someJQueryCallback: ->
    keepGoing = true
    $(someSelector).each ->
      unless someCondition($(@))
        keepGoing = false
        return false
    return false unless keepGoing
    moreStuff()
}

当然,第一次,我让每个人都犯了新的错误:

{ someJQueryCallback: ->
    $(someSelector).each -> return false unless someCondition($(@))
    moreStuff()
}

啊,函数的漂亮语法的危险。作为一名新手,我忘了在该范围内return将退出each而不是someJQueryCallback。但实际上,即使我现在“开悟”,这仍然是我想写的代码。我想以某种方式指定“弹出堆栈,直到你从someJQueryCallback返回。”初始化并设置和检查bool标志很烦人。它增加了瑕疵。是否有一种惯用的方式return以这种方式提高调用堆栈的数量?

1 个答案:

答案 0 :(得分:1)

我不使用coffeescript所以这可能不完美,但希望它能给你一个想法:

{ someJQueryCallback: ->
    try
      $(someSelector).each ->
          throw new Error("STOP!") unless someCondition($(@))
        moreStuff()
    catch error
      return false;
}
相关问题