전단 원리비동기 및 단일 스 레 드
Javascript " "(single thread)
" ", 。
, , , , 。
JS JS (JS , JS )
:
,
:
, , 。
( ), Javascript ( ),
, 。
"이 해결 방안비동기
1、
2、ajax
3、io
:
: , ( )
1、
2、Promise
3、await/async ( )
리 턴 함수
(호환성 이 가장 좋 지만 추천 하지 않 음)리 턴 함수 방식 의 가장 큰 문 제 는:
리 턴 지옥 은 코드 열독 성 이 떨 어 지고 프로젝트 의 유지 성 이 떨어진다 는 것 이다.setTimeout(function (name) {
var catList = name + ',';
setTimeout(function (name) {
catList += name + ',';
setTimeout(function (name) {
catList += name + ',';
}, 1, 'Lynx');
}, 1, 'Jaguar');
}, 1, 'Panther');
, ,
Promise
ES6
주로 해결 하기 위해 서 입 니 다.질문
1、pending: , then()
2、resolved:
3、rejected:
Promise ,
:
const p = new Promise((resolve, reject)=>{ });
const p = new Promise(function(resolve, reject){})
주의:
1. 전 삼 함수 의
곧 실 행 될 겁 니 다. 그리고...
의2. 전 참 함수 내부 에 resolve () 또는 reject () 방법 이 호출 되 지 않 았 다 면 Promise 대상 의 상 태 는 그대로 입 니 다.
, 뒤에pending
3. 전 삼 함수 의 함수 체 내 에 주로 넣 는 것 은?
then()
4. 전 삼 함수 의 함수 체 내,
, Promise 인 스 턴 스 의 상태 가 resolve()
5. 전 삼 함수 의 함수 체 내,
pending resolved
, Promise 인 스 턴 스 의 상태 가 reject()
6. resolve () 또는 reject () 는 하나의 인자 만 전달 할 수 있 습 니 다.
pending rejected
:
const p = new Promise((resolve, reject)=>{ });
p.then(data=>{ }).then(data=>{ })
then :
Promise , then() Promise
1、p resolved ,then , :
const pp = p.then(data=>{
console.log('go');
});
pp p resolved, undefined
2、p resolved ,then , Promise :
const pp = p.then(data=>{
return ' ';
});
pp p resolved, ' '
3、p resolved ,then , Promise :
const pp = p.then(data=>{
return new Promise((resolve, reject)=>{
reject();
});
});
pp rejected( ), undefined
4、p rejected ,then :
const pp = p.then(data=>{ });
pp p rejected, p
주의:
1. resolve () 또는 reject () 방법 을 호출 할 때 인자 가 하나 도 전달 되 지 않 으 면 then () 에서 전달 하 는 함수 에 수신 인자 가 없습니다.
then
2. Promise 상태 가 아니라면
data undefined
, 그럼 then 중 전의함수 가 실 행 됩 니 다.
pending
3. then () 을 호출 할 때 함 수 를 매개 변수 로 전달 하지 않 으 면
Promise , ,
catch
의.catch(error=>{ }) then
then(null, error=>{ }) then(undefined, error=>{ })
catch :
Promise , then
, rejected, undefined
rejected
Promise , Promise , Promise
all
race
(강력 추천)JS 비동기 실현 원리
ES7
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
101 시리즈: 프라미스 #2: 현재 프라미스 상태를 얻고 자신만의 프라미스 큐를 만드는 방법?더 복잡한 주제에 도달하기 전에 Promise 위에 만들 수 있는 도구와 유틸리티 기능에 대해 생각해 볼 것을 제안합니다. 이 기사에서는 현재 약속 상태를 가져오고 약속 대기열을 만드는 방법에 대해 생각해 보겠습니다...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.