Javascript Coffeescript,我该如何编写这个排队函数示例,尤其是循环?
我正在尝试获取一些示例,说明如何在CoffeeScript到JavaScript中做一些不同的事情。在这个排队函数的例子中,我对如何在CoffeeScript中处理这个问题感到困惑Javascript Coffeescript,我该如何编写这个排队函数示例,尤其是循环?,javascript,coffeescript,Javascript,Coffeescript,我正在尝试获取一些示例,说明如何在CoffeeScript到JavaScript中做一些不同的事情。在这个排队函数的例子中,我对如何在CoffeeScript中处理这个问题感到困惑 wrapFunction = (fn, context, params) -> return -> fn.apply(context, params) sayStuff = (str) -> a
wrapFunction = (fn, context, params) ->
return ->
fn.apply(context, params)
sayStuff = (str) ->
alert(str)
fun1 = wrapFunction(sayStuff, this, ['Hello Fun1'])
fun2 = wrapFunction(sayStuff, this, ['Hello Fun2'])
funqueue = []
funqueue.push(fun1)
funqueue.push(fun2)
while (funqueue.length > 0) {
(funqueue.shift())();
}
尤其是我该如何在咖啡脚本中重写这个
while (Array.length > 0) {
(Array.shift())();
非常简单的语法。但是,如何使函数仅在前一个函数完成时启动?您是在询问如何使用CoffeeScript还是如何编写并发队列?此示例是顺序的-CoffeeScript在数组上循环是顺序的,而不是并行的,因此,在CoffeeScript循环调用下一个函数之前,队列中的每个函数都必须返回。我在问如何写一个顺序队列(一个队列,其中每个函数仅在前一个函数完成时触发。警报是一个糟糕的示例。但是,如果说这些函数是动画,做了5秒钟的事情,我想触发它们,这样函数fun2只在fun1完成时才会触发。我正在寻找CoffeeScript实现这一点的方法!所以我只需要编写一个completeeCallback函数?已编辑。
next
将自身作为参数传递给每个排队函数。每个排队函数应确保调用传递给它的参数(此处,f1
中的形式参数名称为completeCallback
)为了使下一个排队函数被调用。这是必要的,因为f1
可以设置一个AJAX调用并立即返回。同时,它将success
处理函数传递到AJAX调用中,浏览器将在稍后的某个点调用该函数。函数队列需要等待成功处理函数调用在返回f1
之前(这是根据您对问题的描述)。Meh,这也不能作为顺序回调。抱歉
fun1 = -> alert 'Hello Fun1'
fun2 = -> alert 'Hello Fun2'
funqueue = [fun1, fun2]
el() for el in funqueue
f1 = (completeCallback) ->
console.log('Waiting...')
completeCallback()
funcs = [ f1, f2, f3 ]
next = ->
if funcs.length > 0
k = funcs.shift()
k(next)
next()