for 루프를 일시 중지하고 지정할 때까지 계속하지 않아야합니다. 루핑 할 배열의 각 항목에 대해 별도의 장치에서 작업을 실행하는 코드를 실행하고 배열의 다음 항목으로 반복하기 전에 해당 작업이 끝날 때까지 기다려야합니다.지정된 때까지 자바 스크립트 루프를 계속 수행하지 마십시오.
다행히도 코드/연산은 커서이며 after:
섹션이 있습니다.
그러나 for 루프를 즉시 실행하고 있으므로이를 방지해야합니다. 루프가 지정 될 때까지 계속되지 않게 할 방법이 있습니까? 아니면 내가 사용해야하는 다른 유형의 루프 또는 무언가?
내 첫 번째 (가난한) 아이디어는 커서의 after:
부분이 true
에 boolean
을 설정할 때까지 지속적으로 실행 한 대한 루프 내에서 잠시 루프를 만드는 것이 었습니다. 나는 그것이 것 두려워으로이 단지 :(브라우저를 둘 것. 내가 할 수있는
아무것도? 내가 자바 스크립트로 비교적 새로운 해요. 내가 여기.하지만
을 내 현재 프로젝트를 즐기고 while-loop
시도이다 있었어요. 나는 dataCounter
가 (현재 배열의 두 항목) 1
3
까지 간다 때문에 즉시 즉시 전체 루프를 실행중인 알고
if(years.length>0){
var dataCounter = 1;
var continueLoop;
for(var i=0;i<years.length;i++){
continueLoop = false;
baja.Ord.make(historyName+"?period=timeRange;start="+years[i][1].encodeToString()+";end="+years[i][2].encodeToString()+"|bql:select timestamp, sum|bql:historyFunc:HistoryRollup.rollup(history:RollupInterval 'hourly')").get(
{
ok: function (result) {
// Iterate through all of the Columns
baja.iterate(result.getColumns(), function (c) {
baja.outln("Column display name: " + c.getDisplayName());
});
},
cursor: {
before: function() {
baja.outln("Called just before iterating through the Cursor");
counter=0;
data[dataCounter] = [];
baja.outln("just made data["+dataCounter+"]");
},
after: function() {
baja.outln("Called just after iterating through the Cursor");
continueLoop = true;
},
each: function() {
if(counter>=data[0].length) {
var dateA = data[dataCounter][counter-1][0];
dateA += 3600000;
}
else {
var dateA = data[0][counter][0];
}
var value=this.get("sum").encodeToString();
var valueNumber=Number(value);
data[dataCounter][counter] = [dateA,valueNumber];
counter++;
},
limit: 744, // Specify optional limit on the number of records (defaults to 10)2147483647
offset: 0 // Specify optional record offset (defaults to 0)
}
})
while(continueLoop = false){
var test = 1;
baja.outln("halp");
}
dataCounter++;
}
}
후 당신이 시도하는 코드 : 실제 코드로이 같은 것입니다. 실제로 수행 한 작업과 작동하지 않는 작업을 보여주는 실제 코드가 있다면 사람들은 더 기꺼이 도울 것입니다. –
그래서 for 루프의 본문은 비동기 작업이어야합니까? – Bergi