컴포넌트의 두 라이프사이클 함수는 비동기식으로 작동합니다. 실행 순서는 선언 주기의 순서, 즉 먼저 1번, 그 다음 2번에 따라 실행됩니까? 메시지 대기열에 삽입되는 순서는 무엇입니까? 문제는 componentWillMount의 비동기 결과 반환 시간이 매우 길고, componentDidMount의 비동기 결과 반환 시간이 매우 짧다고 가정한 것으로 이해될 수 있습니다. componentWillMount
간단한 질문은 다음과 같습니다. 두 비동기 작업 A와 B의 트리거 순서를 알고 있다고 가정하면 A와 B에서 동일한 지연 순서가 보장될 수 있습니까? setTimeout
대답은 당연히 아니오입니다. 예를 들어 A와 B 사이에 마이크로초 지연만 있는 경우 지연이 큰 두 개의
가 setTimeout 就不能保证按照调用 setTimeout가 호출된 순서대로 트리거되는 것을 보장할 수 없습니다.
코드의 실행 순서를 보장하기 위해 이러한 취약한 타이밍 관계에 의존할 수는 없습니다. 코드 검토에서 이 관계를 사용하여 데이터 초기화 및 비동기 요청과 같은 기능을 구현하는 코드를 발견하면 응답자는 분명히 자신의 의견을 제시할 것입니다. 비동기 제어 흐름의 경우 Promise/Yield 및 기타 방법을 사용하여 실행 순서를 보장할 수 있지만 여기서는 설명하지 않습니다.
간단한 질문은 다음과 같습니다. 두 비동기 작업 A와 B의 트리거 순서를 알고 있다고 가정하면 A와 B에서 동일한 지연 순서가 보장될 수 있습니까?
대답은 당연히 아니오입니다. 예를 들어 A와 B 사이에 마이크로초 지연만 있는 경우 지연이 큰 두 개의setTimeout
가
setTimeout
就不能保证按照调用setTimeout
가 호출된 순서대로 트리거되는 것을 보장할 수 없습니다.코드의 실행 순서를 보장하기 위해 이러한 취약한 타이밍 관계에 의존할 수는 없습니다. 코드 검토에서 이 관계를 사용하여 데이터 초기화 및 비동기 요청과 같은 기능을 구현하는 코드를 발견하면 응답자는 분명히 자신의 의견을 제시할 것입니다. 비동기 제어 흐름의 경우 Promise/Yield 및 기타 방법을 사용하여 실행 순서를 보장할 수 있지만 여기서는 설명하지 않습니다.