Promise 객체의 몇 가지 방법
1738 단어 JS 프로그래밍
1. Promise 대상은 두 가지 특징이 있다.
첫째, 대상의 상태가 외부의 영향을 받지 않고 Pending(진행 중), Resolved(완성,Fulfilled) 및 Rejectd(실패) 세 가지 상태가 있다.비동기 조작의 결과만 현재 어떤 상태인지 결정할 수 있고 그 어떠한 다른 조작도 이 상태를 바꿀 수 없다.
둘째, 상태가 바뀌면(Pending에서 Rsolved로, Pending에서 Rejected로) 언제든지 리셋 함수를 추가하면 바로 이 결과를 얻을 수 있다.
셋째, 새로 만들면 바로 실행되며 중도에 취소할 수 없습니다.
ES6에 따르면 Promise 대상은 하나의 구조 함수로 Promise 실례를 생성하는데 사용되며, 이 함수의 매개 변수는 각각 resolve와reject이다.
resolve의 역할은promise 대상의 상태를'미완성'에서'완성'으로 바꾸는 것이다.
프로젝트 함수는 프로젝트 대상의 상태를 '미완성' 에서 '실패' 로 바꾸는 것입니다.
2、Promise.prototype.then()
then 방법은 원형 대상 Promise에 정의됩니다.prototype에서 그의 역할은Promise 실례에 상태 변경의 리셋 함수를 추가하는 것이다.
then 방법의 첫 번째 매개 변수는 Resolved 상태의 리셋 함수이고, 두 번째 매개 변수 (선택 가능) 는 Rejected 상태의 리셋 함수입니다.
예:
getJSON("/post/1.json").then(
post => getJSON(post.commentURL)
).then(
comments => console.log("Resolved: ",comments),
err => console.log("Rejected: ",err)
);
3、Promise.prototype.catch()
이 방법은..오류 발생 시 리셋 함수를 지정하는 데 사용되는 null,rejection의 별명입니다.
일반적으로, then 방법 (즉 then의 두 번째 매개 변수) 에서 Rejected 상태의 리셋 함수를 정의하지 말고,catch 방법을 항상 사용해야 한다.예:
promise
.then(function(data){
//success
})
.catch(function(err){
//error
});
4、Promise.all()
이 메서드는 여러 개의 Promise 인스턴스를 새 Promise 인스턴스로 포장하는 데 사용됩니다.
var p = Promise.all([p1,p2,p3]);
이 방법은 매개 변수로 수조를 받아들인다.
5、Promise.race()
여러 개의 프로미스 실례를 하나의 새로운 프로미스 실례로 포장하는 것도 마찬가지다.
6、Promise.resolve()
기존 객체를 Promise 객체로 변환
7、Promise.reject()
Promise.reject(reason) 메서드는 Rejected 상태의 새 Promise 인스턴스를 반환합니다.