이것은 매우 기본적이지만 쉽게 간과되는 질문입니다. 누구나 이 방법을 사용하는 방법을 알고 있지만 프로세스가 무엇인지 자세히 연구하지 않았습니다.
<input type="text" value="a" name="input" onkeydown="alert(this.value)" /> <input type="text" value="a" name="input" onkeydown="var me=this;setTimeout(function(){alert(me.value)},0)" >#🎜 🎜# 첫 번째 keydown에서는 입력에 원래 값이 팝업되지만 두 번째 keydown에서는 업데이트된 값이 팝업됩니다. 이는 지연이 0으로 설정되어 있지만 거의 즉시 트리거되기 때문입니다. 여전히 실행 대기열 뒤에 추가되지만 이 비동기 프로세스에서는 콜백 함수가 실행될 때 출력이 이미 업데이트된 값입니다. 여기서 또 다른 문제는 내부와 외부의 서로 다른 기능이 나타내는 문제입니다. #… 여기에는 몇 가지 비동기 속성이 있습니다. js는 단일 스레드 언어입니다. 브라우저는 작업(함수)을 실행하기 위해 하나의 메인 스레드만 js에 할당하지만, 이러한 작업은 한 번에 하나의 작업만 실행될 수 있습니다. 네트워크 요청, 타이머, 이벤트 모니터링과 같은 일부 작업은 다른 작업처럼 실행을 기다리기 위해 대기하는 경우 실행 효율성이 매우 낮고 심지어 페이지 오류가 발생할 수도 있습니다. 실패합니다. 따라서 브라우저는 주로 http 요청 스레드, 브라우저 타이밍 트리거 및 브라우저 이벤트 트리거 스레드를 포함하여 시간이 많이 걸리는 작업을 위해 추가 스레드를 열었습니다. 이러한 작업은 비동기적입니다. 브라우저는 네트워크 요청과 같은 비동기 작업을 위해 별도의 스레드를 엽니다. 따라서 문제는 이러한 비동기 작업이 완료된 후 메인 스레드가 어떻게 알 수 있느냐는 것입니다. 답은 콜백 함수입니다. 전체 프로그램은 이벤트 중심입니다. 예를 들어, 타이머를 설정하는 코드가 있습니다. 이 코드가 실행되면 브라우저는 타이밍 작업을 비동기적으로 수행합니다. 이때 타이밍 이벤트가 트리거됩니다. 작업 대기열에 배치됩니다. 전체 프로그램은 이러한 이벤트에 의해 구동됩니다.
그래서 js는 항상 단일 스레드였으며 브라우저는 비동기를 달성하는 열쇠입니다.
다음은 인터넷에서 재현됩니다.
js가 되었습니다. 작업을 수행한다는 것은 작업 큐에서 작업을 추출하여 실행을 위해 메인 스레드에 넣는 것입니다. 아래에서 좀 더 깊이 이해해보자.
필립 로버츠의 연설 "도와주세요, 이벤트 루프에 갇혀 있습니다"에서 나온 그림은 매우 심오합니다!
방금 배운 개념을 그림과 일치시켜 보겠습니다. 위에서 언급한 비동기 작업을 위해 브라우저가 여는 스레드는 WebAPI로 총체적으로 이해될 수 있습니다. 위에서 언급한 작업 대기열은 우리가 메인 스레드라고 부르는 것입니다. 점선으로 구성된 부분입니다. 힙과 스택이 함께 js 메인 스레드를 구성합니다. 예를 들어 그림에는 메인 스레드인 foo() 함수가 있습니다. 함수 본문을 실행할 때 위의 함수가 여전히 실행되어야 함을 발견하여 함수가 실행되면 해당 함수가 스택에서 제거됩니다. 스택이 지워졌다는 것은 작업이 실행되었음을 의미합니다. 이때 콜백 큐에서 다음 작업을 검색하여 스택에 푸시합니다. 이 검색 프로세스를 이벤트 루프라고 합니다. 작업 대기열에 작업이 있습니다.
관련글:
js 비동기 파일로더에 대한 자세한 설명, js 비동기 로딩에 대한 자세한 설명
위 내용은 (일반적인 인터뷰 질문) setTimeout부터 js의 비동기 원리까지 js 기본의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

실제 세계에서 JavaScript의 응용 프로그램에는 서버 측 프로그래밍, 모바일 애플리케이션 개발 및 사물 인터넷 제어가 포함됩니다. 1. 서버 측 프로그래밍은 Node.js를 통해 실현되며 동시 요청 처리에 적합합니다. 2. 모바일 애플리케이션 개발은 재교육을 통해 수행되며 크로스 플랫폼 배포를 지원합니다. 3. Johnny-Five 라이브러리를 통한 IoT 장치 제어에 사용되며 하드웨어 상호 작용에 적합합니다.

일상적인 기술 도구를 사용하여 기능적 다중 테넌트 SaaS 응용 프로그램 (Edtech 앱)을 구축했으며 동일한 작업을 수행 할 수 있습니다. 먼저, 다중 테넌트 SaaS 응용 프로그램은 무엇입니까? 멀티 테넌트 SAAS 응용 프로그램은 노래에서 여러 고객에게 서비스를 제공 할 수 있습니다.

이 기사에서는 Contrim에 의해 확보 된 백엔드와의 프론트 엔드 통합을 보여 주며 Next.js를 사용하여 기능적인 Edtech SaaS 응용 프로그램을 구축합니다. Frontend는 UI 가시성을 제어하기 위해 사용자 권한을 가져오고 API가 역할 기반을 준수하도록합니다.

JavaScript는 현대 웹 개발의 핵심 언어이며 다양성과 유연성에 널리 사용됩니다. 1) 프론트 엔드 개발 : DOM 운영 및 최신 프레임 워크 (예 : React, Vue.js, Angular)를 통해 동적 웹 페이지 및 단일 페이지 응용 프로그램을 구축합니다. 2) 서버 측 개발 : Node.js는 비 차단 I/O 모델을 사용하여 높은 동시성 및 실시간 응용 프로그램을 처리합니다. 3) 모바일 및 데스크탑 애플리케이션 개발 : 크로스 플랫폼 개발은 개발 효율을 향상시키기 위해 반응 및 전자를 통해 실현됩니다.

JavaScript의 최신 트렌드에는 Typescript의 Rise, 현대 프레임 워크 및 라이브러리의 인기 및 WebAssembly의 적용이 포함됩니다. 향후 전망은보다 강력한 유형 시스템, 서버 측 JavaScript 개발, 인공 지능 및 기계 학습의 확장, IoT 및 Edge 컴퓨팅의 잠재력을 포함합니다.

JavaScript는 현대 웹 개발의 초석이며 주요 기능에는 이벤트 중심 프로그래밍, 동적 컨텐츠 생성 및 비동기 프로그래밍이 포함됩니다. 1) 이벤트 중심 프로그래밍을 사용하면 사용자 작업에 따라 웹 페이지가 동적으로 변경 될 수 있습니다. 2) 동적 컨텐츠 생성을 사용하면 조건에 따라 페이지 컨텐츠를 조정할 수 있습니다. 3) 비동기 프로그래밍은 사용자 인터페이스가 차단되지 않도록합니다. JavaScript는 웹 상호 작용, 단일 페이지 응용 프로그램 및 서버 측 개발에 널리 사용되며 사용자 경험 및 크로스 플랫폼 개발의 유연성을 크게 향상시킵니다.

Python은 데이터 과학 및 기계 학습에 더 적합한 반면 JavaScript는 프론트 엔드 및 풀 스택 개발에 더 적합합니다. 1. Python은 간결한 구문 및 풍부한 라이브러리 생태계로 유명하며 데이터 분석 및 웹 개발에 적합합니다. 2. JavaScript는 프론트 엔드 개발의 핵심입니다. Node.js는 서버 측 프로그래밍을 지원하며 풀 스택 개발에 적합합니다.

JavaScript는 이미 최신 브라우저에 내장되어 있기 때문에 설치가 필요하지 않습니다. 시작하려면 텍스트 편집기와 브라우저 만 있으면됩니다. 1) 브라우저 환경에서 태그를 통해 HTML 파일을 포함하여 실행하십시오. 2) Node.js 환경에서 Node.js를 다운로드하고 설치 한 후 명령 줄을 통해 JavaScript 파일을 실행하십시오.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
