새로운 표준은 기본 약속을 추가합니다.
여기서 우리는 체인의 사용에 대해서만 논의하고 세부 사항에 대해 생각할 것입니다.
1. then () 및 catch ()의 검토
콜백 함수는 약속의 최종 결과를 받기 위해 () 및 catch ()의 매개 변수에 배치 할 수 있습니다.
그런 다음 ()는 매개 변수를받을 수 있으며이 콜백은 Promise Resolve () 일 때만 호출됩니다.
그런 다음 ()도 두 번째 매개 변수를받을 수 있으며 두 번째 콜백은 Promise Reject () 상황을 처리하는 데 사용됩니다.
Catch ()는 구체적으로 Promise Reject () 상황을 처리합니다.
다시 말해서, ()는 두 가지 방법을 모두 사용할 수 있고 Catch ()는 Reject () 만 처리 할 수 있습니다. 그러나 reject ()를 처리하기 위해 ()을 사용하여 Reject ()를 처리하는 것이 좋습니다.
2. 그러나 내가 말하고 싶은 것은 위의 것이 아닙니다. 위의 것은 단지 기본 사용법을 검토 한 것입니다. 여기서 우리는 리턴 값의 세부 사항과 그 다음 () 및 당시 () 메소드의 세부 사항으로 시작합니다.
그런 다음 공식 문서에 따르면 ()와 Catch ()는 모두 약속을 되돌려 놓고 매우 흥미 롭습니다. (나는 JS의 초보자이며, 나는 야생의 이전 약속에 노출 된 적이 없다).
우선, 새로 돌아온이 약속은 원래 약속이 아닙니다.
둘째, 새로 반환 된 약속의 상태 (Resolve () 또는 Reject ().)의 변경은 이전 약속의 상태와 ()가 어떻게 사용되는지와 관련이 있습니다.
먼저 ()의 상황을 설명합니다 () : (캐치는 비슷합니다)
var p1 = promise.resolve ( "success"); var p2 = p1.then (task1); var p3 = p2.then (task2);
참고 : 위의 Task1과 Task2는 모두 콜백입니다.
여기서, p1은 생성 된 약속이며 ();
P2는 당시 ()로 얻은 약속이며, P3은 또한 ()와 함께 얻은 약속입니다.
그렇다면 P2 상태는 어떻게 변하고 P3는 어떻습니까?
이 개념을 설명하기 위해 다음 그림을 사용하겠습니다.
안에,
1. 팔각형은 약속 대상을 나타냅니다.
2. 원은 약속 안에있는 상태를 나타내고 검은 화살표는 상태 변화를 나타냅니다.
3. 오른쪽 화살표는 당시 기능을 호출하는 것을 나타냅니다.
4. 즉, 당시 함수가 불리는 한 새로운 약속 객체가 생성됩니다.
5. 당시 기능을 호출 할 때, 이전 약속 객체의 상태가 계류 중이든 정산되었는지 여부에 관계없이 이전 약속 객체의 상태가 무엇인지 모르십니까? 이것은 가정 할 수 없으며 밖에서 볼 수 없습니다.
6. 당시 함수의 호출은 차단되지 않을 것입니다.
우리는 P1 상태가 해결되었음을 알고 있습니다 (위의 코드 참조). 그러나 P2 및 P3 상태가 어떻게 변경되거나 거부 되었습니까? 아래의 새로운 그림을보십시오.
더 많은 다이아몬드를 볼 수 있습니다.
다이아몬드는 호출 될 때 통과 된 콜백 함수를 나타냅니다. 상향 마름모는 [이전 약속 대상에 대해 해결 된]에서 통과되는 과정을 나타내고, 하향 마름모는 [이전 약속 대상에 대해 거부 된]에서 통과되는 과정을 나타냅니다.
참고 :이 예에서는 거부 처리 처리가 전달되지 않습니다. 즉, 위의 그림에 아래쪽 다이아몬드를 그려서는 안됩니다. 편의를 위해, 우리는 위쪽 및 아래쪽 다이아몬드가 우리가 사용하거나 잡는 방식과 관련이 있다는 것을 알아야합니다. 샘플 코드를 다시 살펴 보겠습니다.
var p1 = promise.resolve ( "success"); var p2 = p1.then (task1); // 위쪽 마름모가 생성됩니다. var p3 = p2. then (task2); // 상향 마름모꼴이 생성됩니다.
우리는 두 번째 매개 변수를 제공하지 않는다는 것을 알 수 있습니다. 즉, 거부를 처리하지 않습니다.
추가하려면 거부를 처리하려면 사용하거나 잡을 수 있습니다. 캐치는 특히 거부를 다루는 데 특별히 사용됩니다. 그 외에도 그 사이에는 차이가 없습니다.
1. P1의 최종 상태 (Resolve 또는 Reject)가 올바르게 처리되면 (호출 할 때 해당 콜백이 통과됩니다. 즉, 해당 다이아몬드가 있습니다) P2 상태가 변경되도록 변경됩니다.
2 P1의 최종 상태 (Resolve 또는 Reject)가 올바르게 처리되지 않으면 (호출 할 때 해당 콜백이 누락 된 경우, 해당 다이아몬드가 없음) P1 상태가 P2 (P1 수신 상태)로 라우팅됩니다.
3. 이렇게 통과하십시오.
4.이 기사에서는 콜백에서 마지막 약속 최종 데이터를 얻는 방법, 즉 데이터를 전달하는 방법에 대해 설명하지 않습니다. 많은 튜토리얼이 있습니다.
3.이 기사를 요약하는 몇 가지 예가 있습니다.
그림에서, P1의 상태가 주어지고, 해결 또는 거부는 스스로 주어진다. 목표는 P2와 P3의 최종 상태를 시작하는 것입니다.
위는 네 가지 독립적 인 예이며, 그들 사이에 연결되지 않은 예입니다.
X는 P3가 당시 또는 캐치 함수를 사용하지 않으므로 해상도 또는 거부를 처리 할 방법이 없습니다.
마지막으로, 오류가 있으면 제 시간에 저를 수정 해주세요. 감사합니다! ~! ! @~~~
위의 기사 JS Promise Chain에 대한 심층적 인 이해는 내가 공유 한 모든 내용입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.