我正在调用一个函数,并在该函数返回一些数据时添加一个侦听器。当数据返回时我需要调用另一个函数等等。
是否有一种简单的方法将这些函数“链接”在一起,以便第一个函数触发 - 等待侦听器,然后触发第二个函数,为其创建侦听器,依此类推,直到最后一个函数调用在开始时定义的单独函数。我认为它与批量加载脚本在同一行上工作。
我设想代码的工作方式如下:
var dataLoader:DataLoader = new DataLoader(onAllComplete, onError);
dataLoader.add(getData1, {args1, args2}, listnerType.DATA_LOADED);
dataLoader.add(getData2, {args3, args4}, listnerType.DATA_LOADED);
dataLoader.add(getData3, {args5, args6}, listnerType.DATA_LOADED);
dataLoader.start();
private function onAllComplete(e:Array):void {
//where e contains an array of all the event results
}
private function onError(e:Event):void {
//will fire if there are any errors along the way
}
谢谢,
乔什
我只会做一些简单的事情,例如:(另外,这是某种伪代码,您需要正确的错误事件和内容)
var numLoaded:int = 0;
var numError:int = 0;
var loadingIndex:int = 0;
var itemsToLoad:Array = ['img1.jpg', 'img2.jpg', 'img3.jpg'];
public function startLoading():void{
loader.load(itemsToLoad[loadingIndex];
loader.addEventListener(Event.COMPLETE, completeHandler);
}
public function completeHandler(event:Event):void{
loadingIndex++;
numLoaded++;
if(numLoaded + numError >= itemsToLoad.length){
onAllItemsComplete();
}else{
loader.load(itemsToLoad[loadingIndex];
}
}
public function errorHandler(event:Event):void{
loadingIndex++;
numError++;
if(numLoaded + numError >= itemsToLoad.length){
onAllItemsComplete();
}else{
loader.load(itemsToLoad[loadingIndex];
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)