通常在Javascript中我可以做这样的事情:
var step;
determineStep();
function determineStep() {
step = 'A';
asyncCallbackA(function(result)) {
if (result.testForB) performB();
});
}
function performB() {
step = 'B';
asyncCallbackB(function(result)) {
if (result.testForC) performC();
});
}
function performC() {
step = 'C';
...
}
但是 Coffeescript 不允许命名函数被提升,所以我必须在调用它之前定义一个函数。这将导致它们出现故障(非常混乱)。如果它们中的任何一个具有循环依赖关系,那么根本不可能。
在 Coffeescript 我被迫这样做:
step = null
determineStep =
step = 'A'
asyncCallbackA (result) ->
if result.testForB
step = 'B'
asyncCallbackB (result) ->
if result.testForC
step = 'C'
asyncCallbackC (result) ->
...
determineStep()
如果您有多个步骤,这可能很快就会失控。
是否可以在 Coffeescript 中实现 Javascript 模式?如果没有,处理这种情况的最佳方法是什么?