반전 함수, 동기 반전 & 비동기 반전?동기 화 작업 & 비동기 작업?
2508 단어 js
동기 반전
리 셋 함수 사용 하지 않 음:
A();
B();
리 셋 함수 사용:
A(B);
양자 효과 가 같 고 집행 순 서 는 모두 선 A (), 재 B () 이다.효 과 는 A 가 실 행 된 후에 다시 B 를 실행 하 는 것 처럼 보 입 니 다. 즉, 리 턴 함수 입 니 다.물론 다 층 반전 함 수 를 끼 워 넣 으 면 코드 시청 에 영향 을 주 고 '지옥 으로 돌아 가 는' 장면 을 형성 할 수 있다.
2. 비동기 반전
리 턴 함 수 는 주로 비동기 장면 에 사용 되 기 때문에 동기 화 된 쓰기 코드 와 다른 기능 을 실현 할 수 있다.(코드 실행 순서 변화)
동기 화 작업 & 비동기 작업
A();
B();
C();
상기 코드 에 대해 A, B, C 세 함수 가 모두 동기 화 작업 이 라면 집행 순 서 는 A B C 이다.B 가 비동기 작업 이 라면 실행 순 서 는 A C B 가 된다.이 유 는 js 의 Event Loop (이벤트 순환 메커니즘) 때문이다.js 는 단일 스 레 드 입 니 다. 다 중 스 레 드 를 모방 하여 동시 실행 하기 위해 js 엔진 은 두 가지 메모리 공간 을 제외 하고 하 나 는 스 택 을 실행 할 수 있 습 니 다. 동기 화 작업 을 저장 할 수 있 습 니 다 (스 택, 선진 후).다른 하 나 는 작업 대기 열 입 니 다. 비동기 작업 을 저장 하 는 데 사 용 됩 니 다.동기 화 작업 이 있 으 면 실행 가능 한 스 택 에 두 고 비동기 작업 이 있 으 면 작업 대기 열 에 두 개의 저장 공간 에서 각각 작업 을 실행 합 니 다.다른 것 은 js 본질 이 냐, 단일 스 레 드 냐, 두 메모리 공간 에서 의 결 과 를 동시에 출력 할 수 없다 는 것 이다. js 는 항상 동기 화 작업 을 먼저 수행 해 야 한다. 즉, 스 택 에서 의 동기 화 작업 을 완성 한 후에 야 비동기 작업 을 수행 할 수 있다.동기 화 작업 (비동기 작업) 과 유사 한 반전 함수 와 같 습 니 다.그러나 한 가지 주의해 야 할 것 은 작업 대기 열 에 있 는 비동기 작업 은 넣 으 면 실 행 됩 니 다. 결 과 를 출력 하 느 라 바 쁘 지 않 을 뿐 동기 화 작업 이 모두 실 행 될 때 까지 기 다 려 야 합 니 다. 이때 작업 대기 열 에 있 는 비동기 결 과 를 직접 가 져 와 시간 을 절약 합 니 다.동기 화 임무 들 이 실 행 될 때 비동기 임무 도 기다 리 지 않 았 고 그들 도 실행 을 계산 하고 있 었 다. 출력 결과 가 없 었 을 뿐 동기 화 임무 가 완성 되 었 을 때 비동기 임 무 는 대부분 상황 에서 도 완성 되 었 고 마침 꺼 내 서 한 시간 에 두 가지 일 을 하기 때문에 막 히 지 않 았 다.예 를 들 면:
A();
B();
C();
만약 에 B 가 시간 이 오래 걸 리 는 동작 이 라면 동기 실행 은 반드시 C 의 운행 을 막 을 것 이다. C 1s 가 정 해 지지 않 으 면 잘 실 행 될 것 이 라 고 말 하지만 B 는 10s 를 실행 해 야 한다. 만약 에 C 뒤에 시간 이 적은 코드 가 있다 면 코드 의 집행 효율 에 더욱 영향 을 줄 것 이다.이때 B 를 비동기 임무 로 바 꾸 면 코드 는 B 를 뛰 어 넘 고 뒤의 것 을 실행 합 니 다. 마침 뒤의 집행 이 끝 났 고 B 도 결 과 를 연산 합 니 다. 이때 다시 실행 하면 시간 을 지체 하지 않 고 시간 을 충분히 이용 하여 가능 한 한 많은 일 을 할 수 있 습 니 다.
리 턴 함 수 는 리 턴 함수 가 작용 하기 때문에 일정한 조건 을 만족 시 켜 서 실 행 된 것 입 니 다. 일정한 조건 은 특정한 함수 가 완 성 된 후에 특정한 사건 이 촉발 되 고 특정한 시간 후에 등 을 포함 합 니 다. 이에 대응 하 는 응용 장면 은 각각 ajax 요청, 사건 감청 처리, setTimeout 등 방법 입 니 다.이 몇 개의 장면 은 모두 비동기 적 인 것 으로 리 턴 함수 가 주로 비동기 장면 에 사용 된다 는 것 을 의미한다. 동기 화의 의미 가 크 지 않 고 쓰기 에 만 변화 가 생 겼 기 때문이다.리 턴 함 수 는 실행 가능 한 코드 일 뿐 입 니 다. 먼저 무엇 을 한 다음 에 다시 무엇 을 호출 합 니까? 이 실행 순 서 는 주로 동기, 비동기 의 원리 로 인해 발생 한 것 입 니 다. 리 턴 의 사상 은 우리 가 모두 알 고 헷 갈 리 지 않 습 니 다. 복잡 한 것 은 동기, 비동기 의 순서 일 뿐 입 니 다.(비동기 적 으로 매크로 임무, 마이크로 임무 로 세분 화 되 어 더욱 복잡 하고 코드 의 집행 순 서 를 판단 하기 어렵다)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.