2020.6.3 작은 쓰레기를 정리하는 ES6 promise
14087 단어 es6
하나.Promise
1. Promise 대상이란 무엇인가: 미래에 발생할 어떤 사건을 대표하며, 일반적으로 비동기적인 조작을 가리킨다.
2. Promise 객체
3. promise 객체의 세 가지 상태:
setTimeout(() => {
console.log(" ");
},0);
let promise = new Promise((resolve,reject) =>{
console.log(" promise ");
});
console.log(promise);
console.log(" ");
6.reject의 사용
이상은promise의resolve용법에 대한 해석이다. 리소스는promise가 성공했을 때의 리셋에 해당한다. 리셋의 상태를fullfiled로 수정한다. 그러면 리셋은 실패했을 때의 리셋이다. 리셋의 상태를 리셋으로 수정한다. 그러면 우리는then에서 포착하고'실패'상황의 리셋을 실행할 수 있다.
function promiseClick(){
let p = new Promise(function(resolve, reject){
setTimeout(function(){
var num = Math.ceil(Math.random()*20); // 1-10
console.log(' :',num)
if(num<=10){
resolve(num);
}
else{
reject(' 10 ');
}
}, 2000);
})
return p
}
promiseClick().then(
function(data){
console.log('resolved ');
console.log(' :',data);
},
function(reason, data){
console.log('rejected ');
console.log(' :',reason);
}
);
위 코드:promiseClick 방법을 호출하여 실행하고 2초 후에 무작위 수를 얻습니다. 10보다 작으면 성공적입니다.resolve를 호출하여 Promise의 상태를fullfiled로 수정합니다.그렇지 않으면 우리는 '실패' 라고 생각하고, Reject를 호출하고 파라미터를 전달하는 것을 실패의 원인으로 삼는다.상태를 Rejected로 변경합니다
promiseClick을 실행하고 then에 두 개의 매개 변수를 전달했습니다. 이 두 개의 매개 변수는 각각 두 개의 함수입니다. then 방법은 두 개의 매개 변수를 받아들일 수 있습니다. 첫 번째는resolve의 리셋, 두 번째는reject의 리셋입니다.(즉then 방법에서 두 개의 리셋을 받아들일 수 있다. 하나는 성공적인 리셋 함수, 하나는 실패한 리셋 함수, 그리고 리셋 함수에서 성공한 데이터와 실패한 원인을 얻을 수 있기 때문이다) 그래서 우리는 성공과 실패가 전송된 데이터를 각각 얻을 수 있으면 위의 운행 결과가 있다.
7.catch의 사용법
Promise 대상 방법인then 방법과 병행하는 방법 중 하나는catch이다.try catch와 유사하다.catch는 이상을 포획하는 데 쓰인다.즉then 방법에서 받아들인 두 번째 파라미터인rejected의 리셋과 같다. 다음과 같다.
function promiseClick(){
let p = new Promise(function(resolve, reject){
setTimeout(function(){
var num = Math.ceil(Math.random()*20); // 1-10
console.log(' :',num)
if(num<=10){
resolve(num);
}
else{
reject(' 10 ');
}
}, 2000);
})
return p
}
promiseClick().then(
function(data){
console.log('resolved ');
console.log(' :',data);
}
)
.catch(function(reason, data){
console.log('catch rejected ');
console.log('catch :',reason);
});
효과는 then의 두 번째 매개 변수에 쓴 것과 같다.이것은 10보다 큰 상황에서 리셋이 실패한 원인을 출력하지만, 리셋을 실행할 때 (즉 위 then의 첫 번째 인자) 이상을 던지면 (코드가 틀렸음) js가 잘못되지 않고, 이catch 방법에 들어간다.
8.all의 사용법
then과 같은 등급의 또 다른 방법인 all 방법은 비동기 조작을 병행하여 실행하는 능력을 제공하고 모든 비동기 조작이 끝난 후에 실행 결과가 성공할 때만 리셋을 실행한다.
9.race의 사용법
all는 모든 비동기 조작이 끝난 후에then 방법을 실행한다.race 방법은 상반된다. 누가 먼저 실행하고 완성하면 리셋을 먼저 실행한다.먼저 실행된 레이스의 성공적인 리셋이든 실패한 리셋이든 나머지는 레이스의 어떤 리셋에도 들어가지 않습니다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JavaScript로 카드 놀이를 넘기는 애니메이션을 만들려고했습니다.카드를 넘기는 애니메이션을 만들어 보았습니다. 폴더 구성은 다음과 같습니다. 코드는 다음과 같습니다. card_turning.html 다음은 JavaScript 코드입니다. cardTurning.js 결과는, 이런 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.