몇 가지 사항을 확인하고 setTimeout과 queue.pop()을 사용하여 반복적으로 자체를 실행하는 비동기 함수가 있습니다. 일부 논리가 참인 후 일부 요소가 대기열에 남아 있어도 계속 호출하고 계속 호출하는 기능이 필요하지 않습니다. 그래서 나는 다음과 같은 성명서를 가지고 있습니다.자바 비동기 기능 : 반환과 함께 짧게 잘라 내기
if (isWhatIneed(currentItem)) {
completed = true;
return;
}
나는 찾고있는 것을 가지고 있습니다. 문제는 큐가 그 이후로 더 많은 항목을 공급 받았고 비동기 적으로 계속 실행된다는 것입니다. 이것은 더 아무것도 (특히 큐에서 더 많은 항목을 팝업을 계속 실행하지 않는 일에서 호출 스택의 각 실행을 방지
if (completed) {
console.log("already completed");
return;
}
: 그래서 내가 그 함수의 맨 위에 추가 한에 해결하는).
제 질문은 여러 번의 return 문을 사용하여 읽었습니다. 기능의 맨 위에있는 것은 실천이 좋지 않습니다. 그러나이 경우에는 이것이 할 수있는 또 다른 방법이 있습니까? 나는 if (! completed) {// ...}로 내 기능의 몸 전체를 감쌀 수 있었지만, 이것은 몸 전체를 들여 쓰기 때문에 나를 추악하게 만든다. 조기 회귀는 그렇지 않다.
감사합니다,
어디에서 함수의 맨 위에 return 문을 사용하는 것이 바람직하지 않습니까? 전신을 감쌀 때보 다 훨씬 낫습니다. –
MDN에서 읽은 것 같아요. 아마도 한 가지만 반환해야한다고 말입니다. 더 이상 확신 할 수 없습니다. 코멘트 주셔서 감사합니다! :-) –
제 2의 James 'opionion입니다. 또한 코드 경로를 더 쉽게 따라 할 수 있기 때문에 여러 번 반환하는 것이 좋지 않지만이 경우에는 바람직하고 명확하다고 생각합니다. –