Javascript 如何知道异步递归活动何时完成?

Javascript 如何知道异步递归活动何时完成?,javascript,events,asynchronous,recursion,yui,Javascript,Events,Asynchronous,Recursion,Yui,我有一个基于目录结构构建列表的脚本。它从WebDAV资源中读取以发现每个文件的锁,并附加节点和类以将此结构显示为一系列嵌套列表,如果该列表项被锁定,则列表项上有一个类 这一切都非常有效,我现在想做的是为创建的列表节点分配功能 我可以添加此功能,因为列表项是在异步回调的范围内创建的,但我想知道是否有任何常见的方法可以等待一系列潜在的递归异步活动(其中包含Y资源的X级目录)完成,在这一点上,安全地对整个创建的节点组执行操作 我之所以这样问,是因为我使用的是YUI3,它们有各种各样的便利,比如: //

我有一个基于目录结构构建列表的脚本。它从WebDAV资源中读取以发现每个文件的锁,并附加节点和类以将此结构显示为一系列嵌套列表,如果该列表项被锁定,则列表项上有一个类

这一切都非常有效,我现在想做的是为创建的列表节点分配功能

我可以添加此功能,因为列表项是在异步回调的范围内创建的,但我想知道是否有任何常见的方法可以等待一系列潜在的递归异步活动(其中包含Y资源的X级目录)完成,在这一点上,安全地对整个创建的节点组执行操作

我之所以这样问,是因为我使用的是YUI3,它们有各种各样的便利,比如:

// Add functionality to items meeting the CSS selector criteria
Y.all('#select_projects_list li.file:not(#select_projects_list li.locked)').on('click', function(e){
    // do stuff with 'this'
});
如果我执行上述操作,可能会比在每个异步回调中重复类似的函数更有效,因为最终可能会有数百个资源

赞赏伪代码解决方案、想法和方法


干杯。

使用活动授权。通常,如果您发现自己在(…)上使用了
Y.all(…)。可能应该使用事件委派

试试这个:

Y.one('#select_projects_list').delegate('click', handleClick, 'li.file:not(.locked)');
handleClick
将被调用,用于在“选择项目”列表中的任何li上发生的任何单击,该列表具有类“文件”,并且没有类“锁定”。如果以后添加、删除或更改这些li节点中的任何一个,则无需执行更多操作或更改任何事件订阅。一个委托监听器就可以了。在handleClick回调中,
将是li节点


beaut。工作很有魅力,非常棒,我可以在节点存在之前授权功能,谢谢Luke!