ES6 Promise 시작
Promise
콘셉트
특징
존재하는 결점
기본용법
var promise=new Promise(function(resolve,reject){
if(/* */){
resolve(value); //resolve Promise pending resolve, ,
}else{
reject(error); //reject Promise pending rejected, ,
}
})
promise.then(function(value){
//success code ...
},function(err){ //
//error code ...
})
를 각각 지정할 수 있음 getJSON('/post/1.json').then(function(post) {
return getJSON(post.commentURL);
}).then(function(comments) {
// some code
}).catch(function(error) {
// Promise , getJSON then
});
var p=Promise.all([p1,p2,p3])
, 그룹의 요소가 Promise 실례가 아니라면 Promise를 통과합니다.resolve 방법은Promise 실례로 바꾸고 더 이상 처리합니다. (Promise.all 방법의 매개 변수는 그룹이 아닐 수 있지만,iterator 인터페이스가 있어야 하며, 되돌아오는 모든 구성원은Promise 실례입니다.)p의 상태는 두 가지가 있다var p=Promise.race([p1,p2,p3])
.p1, p2, p3 중 하나의 실례가 먼저 상태를 바꾸면 p의 상태는 따라서 바뀐다. 그 먼저 바뀐Promise 실례의 반환값은 p의 리셋 함수에 전달된다.배열의 요소가 Promise 인스턴스가 아닌 경우 Promise를 통해resolve 방법은 이를 Promise 실례로 바꾸어 더욱 처리한다 let thenable = {
then: function(resolve, reject) {
resolve(42);
}
};
let p1 = Promise.resolve(thenable);
p1.then(function(value) {
console.log(value); // 42
});
을 즉시 실행한다 setTimeout(function(){ //
console.log('three');
},0)
Promise.resolve().then(function(){ //
console.log('two');
})
console.log('one'); //
// :one two three
const thenable = {
then(resolve, reject) {
reject(' ');
}
};
Promise.reject(thenable)
.catch(e => {
console.log(e === thenable) //Promise.reject(thenable) thenable catch e, reject
})
// true
asyncFunc()
.then(f1)
.catch(r1)
.then(f2)
.done();
// done
Promise.prototype.done=function(onFulfilled, onRejected){
this.then(onFulfilled, onRejected) // then , onFulfilled, onRejected
.catch(function(reason){
setTimeout(() => {throw reason},0)
})
}
Promise.try
Promise.resolve().then(f)
.그러나 이렇게 쓰면 이번 이벤트 순환이 끝난 뒤에 실행됩니다 const f = () => console.log('now');
Promise.resolve().then(f);
console.log('next');
// next
// now
// f , Promise ,
const f = () => console.log('now');
(async () => f())();
// , async , f , then .
// async() = > f() f() , promise.catch
console.log('next');
// now
// next
//
(async() => f())()
.then(...)
.catch(...)
const f = () => console.log('now');
(
() => new Promise(
resolve => resolve(f())
)
)();
console.log('next');
// now
// next
, Promise.try(f)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.