我发现自己多次写这篇文章:
{ 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
以这种方式提高调用堆栈的数量?
答案 0 :(得分:1)
我不使用coffeescript所以这可能不完美,但希望它能给你一个想法:
{ someJQueryCallback: ->
try
$(someSelector).each ->
throw new Error("STOP!") unless someCondition($(@))
moreStuff()
catch error
return false;
}