일반적으로 속성과 값을 반복하기 위해 배열과 객체 모두에 대한 루프를 수행 할 수 있습니다. 하지만 루프가 차단되고 있습니다. 그러나 비동기 루프를 시뮬레이트하는 데 타임 아웃을 사용할 수 있습니다. i managed to do it for an array. 건네 가져옵니다 i
을 - 리미터가 배열에 반복하면서javascript의 객체에 대한 "비동기"루프
//do stuff
(function asyncLoop(i){
//do stuff in the current iteration
if(++i < array.length){
setTimeout(function(){asyncLoop(i);}, 1);
} else {
callback();
}
}(0));
//do stuff immediately after, while looping
하지만이 모델에만 작동합니다. 이것을 객체에 대해 수행하는 방법이 있습니까? 객체가 반복 할 키가 50k 개라고 말하면서 부당하게 길게 만듭니다.
(afaik, 최신 IE 만 해당) 및 WebWorkers (IE에는 아직 없음)이 있지만, 객체에 대해 동일한 전략을 사용할 수 있는지 알고 싶습니다.
하지만 그 개체 (또는 참조)를 배열에 넣으려고 반복하는 것을 의미합니다. – Joseph
@Joseph - 예, 먼저 배열에 속성을 수집해야합니다. 속성의 비동기 반복자는 없습니다. – jfriend00
['Object.keys'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys) + [es5-shim] (https://github.com/kriskowal/es5- shim) – katspaugh