대용량 스크립트가 매우 동기화되어 있습니다.JavaScript : 동기식으로 다시 시작하는 비동기 함수
var result = doSomethingSynchronous(myVar);
if (result === 'something') {
doSomethingElse();
}
doSomethingSynchronous 기능을 갖는 if 문에 값을 반환 for 루프 :
1)는이 같은 기능을 실행
var i = 0; len = someVariable.length;
for (; i < len; i++) {
if (someVariable[i] === 'aString') {
return true;
} else {
doSomethingElse();
}
}
이 때문에 루프 처리를위한 강렬해질 수 있습니다, 나는 배열에서 하나의 요소를 이동 한 후 setTimeout을 사용하여 비동기 적으로 실행되는 반복 큐 처리 함수로 for 루프를 대체했습니다. 비동기 적으로 실행되면 물론 값을 반환하지 않고 첫 번째 스 니펫의 '결과'변수에 동 기적으로 할당합니다. if 문은 항상 실패합니다. 제 질문은이 부분을 동기식으로 유지하는 방법이 있습니까? 스크립트가 다음 줄로 넘어 가기 전에 결과에 값을 할당 하시겠습니까? 아니면 비동기 함수가 완료되었음을 알리기 위해 observer/mediator 패턴 또는 유사한 것을 사용해야합니까?
또는 콜백을 사용할 수도 있지만 실제 실제 코드는이 코드보다 길어서 모두 동시성에 달려 있습니다. 따라서 var result = doSomethingSynchronous()를 비동기로 전환하면 나머지 동기 스크립트에도 도미노 효과가 발생합니다. 맞습니까? :-) 이것은 어렵고 오류가 발생하기 쉬운 변환으로 들리므로 조언을 구하는 것이 좋습니다.
감사합니다.
- 변수 이름 "le"을 수정하기위한 UDPATED. "len"이어야합니다.