Promise
Promise는 비동기 작업 메시지를 얻을 수 있는 객체입니다.
특징: 객체의 상태는 외부 세계의 영향을 받지 않습니다(보류 중, 해결 완료, 거부 실패). 비동기 작업의 결과는 현재 상태를 확인할 수 있습니다. 일단 상태가 변경되면 다시 변경되지 않습니다(보류 중에서 해결됨으로, 보류 중에서 거부됨으로만).
단점: 일단 생성되면 즉시 실행될 수 없습니다. 도중에 취소됩니다. 콜백 함수가 없으면 내부적으로 발생합니다. 오류는 외부에 반영될 수 없습니다. 대기 중이면 현재 진행 상황을 알 수 없습니다.
일반적으로 콜백을 정의하지 않습니다. then 메소드의 Reject 상태(즉, then의 두 번째 매개변수) 함수이지만, 이 메소드는 이전 then의 오류를 캡처할 수 있고 동기 쓰기 메소드(try/catch)에 더 가깝기 때문에 catch 메소드를 사용합니다. 메소드는 Promise 객체를 반환하므로 나중에 then 메소드를 호출할 수 있습니다. catch 메소드 중에서 오류가 발생할 수도 있습니다.
Promise.all 메소드는 여러 Promise 인스턴스를 새 Promise 인스턴스로 패키징하는 데 사용됩니다. Promise.all 메소드는 배열이 아닐 수 있지만 반환된 각 멤버는 Promise 인스턴스입니다. p1 p2 p3 상태가 충족되는 경우에만 p 상태가 거부됩니다. , p는 거부됩니다.
// 将thenable对象转为Promise对象var thenable = { then(resolve, reject) { resolve(200) } }var p = Promise.resolve(thenable) p.then((data) => { console.log(data) }) // 200
Promise.reject는 Promise 개체를 반환합니다. 인스턴스 상태가 거부됩니다. 이 메소드의 매개변수는 거부 사유로 변경되지 않고 후속 메소드의 매개변수가 됩니다.
// donePromise.prototype.done = function(onFulfilled, onRejected) {this.then(onFulfilled, onRejected) .catch(function(reason) { setTimeout(() => {throw reason}, 0) }); };// finallyPromise.prototype.finally = function (callback) { let P = this.constructor;return this.then( value => P.resolve(callback()).then(() => value), reason => P.resolve(callback()).then(() => { throw reason }) ); };
마지막으로 Promise 객체의 상태에 관계없이 작업을 수행하고 공통 콜백을 허용합니다. 매개변수로서의 기능(실행해야 함)
위 내용은 es6의 Promise에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!