我已经填充了一个数组。
我需要获取该数组中的每个项目,对该项目执行一些计算,将结果推送到数组,然后移动到数组中的下一个项目,依此类推。
计算是在一个单独的类中进行的。然后当计算完成时,我发送一个事件并监听类完成。
我正在使用 forEach 但我需要暂停 forEach 函数并在继续之前等待 dispatchEvent 侦听器,但我似乎无法让它工作。
跟踪似乎表明 forEach 只是在数组中运行并每次都重置计算类。
这是我的代码的 jist。我从服务器上的 sql 表中填充数组,然后启动 forEach。
任何人都可以建议一个解决方案:
function handleLoadSuccessful(evt:Event):void
{
evt.target.dataFormat = URLLoaderDataFormat.TEXT;
var corrected:String = evt.target.data;
corrected = corrected.slice(1,corrected.length-1);
var result:URLVariables = new URLVariables(corrected);
if (result.errorcode=="0")
{
for (var i:Number=0; i < result.n; i++)
{
liveOrderArray.push(
{
code:result["ItemCode"+i],
qty:Number(result["LineQuantity"+i]) - Number(result["DespatchReceiptQuantity"+i])
})
}
liveOrderArray.forEach(allocate);
} else {
trace("ERROR IN RUNNING QUERY");
}
}
function allocate(element:*, index:int, arr:Array):void {
trace("code: " + element.code + " qty:" + element.qty );
allocationbible.profileCode = element.code.substring(0,1);
allocationbible.finishThk = Number(element.code.substring(1,3));
allocationbible.longEdgeCode = element.code.substring(3,4);
allocationbible.backingDetailCode = element.code.substring(4,5);
allocationbible.coreboardCode = element.code.substring(5,6);
allocationBible = new allocationbible;
allocationBible.addEventListener("allocated", updateAllocationQty, false, 0, true);
trace("*************************************");
}
function updateAllocationQty (evt:Event):void {
//add result to array
trace(allocationbible.coreboardLongCode);
}