promise 지식 포인트 요약

2443 단어
쉬엄쉬엄 공부하다

프로미스를 왜 사용하는지


Promise에 대해 말하자면, 우리는 이것이 지역 사회에서 비교적 이상적인 비동기 프로그래밍 해결 방안이라는 것을 안다.프로미스를 파악하려면 먼저 그 이유를 알아야 한다.promise의 제시는 여러 개의 서로 의존하는 코드 간의 끼워넣기 문제를 잘 해결했다. 예를 들어 C 코드는 B 코드의 결과가 필요하고 B 코드는 A 코드의 결과가 필요하다. 전통적인 방안으로 겹겹이 끼워넣는 상황이 발생하여 유지하기 어렵다.

프로미스 대상이 뭐예요?


promise 대상은 총 3가지 상태가 있습니다.
4
  • pending(진행 중)
  • 4
  • fulfilled(성공)
  • rejected

  • promise 대상은 몇 가지 관련 방법이 있습니다.
    let promise = new Promise((resolve,reject) => {
        //....
        resolve('2');
        
    
        //....
        //reject('4');
    })

    가장 간단하게 대상을 만드는 방법은 Resolve와reject의 상태를 각각 매개 변수, 즉 성공한 정보나 실패할 때의 힌트를 전달하는 것이다. 물론 두 가지 상태가 동시에 있어야 하는 것은 아니다.
    n 방법은 두 개의 매개 변수를 받아들인다. 첫 번째는fulfilled상태에서 진행할 절차이고 두 번째 매개 변수는 선택할 수 있다. 이것은 리jected상태에서 실행하는 방법을 가리킨다. 물론catch방법으로 잘못된 상태에서의 방법을 정의하는 것도 추천한다.try와...catch 구조 유사
    promise
      .then((data) => { //cb
        // success
      })
      .catch((err) => {
        // error
      });

    이 대상은 몇 가지 특징이 있는데,
    1. 예를 들어 상태가 바뀌면 더 이상 변화가 일어나지 않는다. 즉pending상태가fulfuilled나rejected로 바뀌면 더 이상 변하지 않는다는 것이다.
    let promise = new Promise((resolve,reject) => {
    
        resolve('2');
        reject('4');
    })

    예를 들어 위의 코드는promise가fulfulled상태에 들어간 후에 변화가 발생하지 않기 때문에reject의 조작은 무효입니다.
    2. 예를 들어promise 대상이 만든 코드는 동기화되고then 방법은 비동기적이다.
    let promise = new Promise((resolve, reject) => {
        console.log('1');
        resolve('2');
      });
    promise.then((resolve,reject) => {
        console.log(resolve);
    
    })
    console.log(3);
    
    // 1 3 2

    promise 대상은 창설 후 즉시 실행되기 때문에 출력 1, then 방법은 비동기적으로 실행되며 기다리는 실천 대기열에 놓여 있으며 이번 이벤트가 순환이 끝날 때 실행되기 때문에 먼저 3을 출력하고 마지막에 2를 출력합니다.3. 자발적으로 오류를 던지지 않는다는 점은 특별하다. 이것은 우리가catch 방법이나then의 두 번째 파라미터를 정의하여 오류를 가져와야 한다는 것을 의미한다. 그렇지 않으면 오류가 발견될 수 없다. 4.체인식 구조인 then 함수는 다른 then 함수를 연결할 수 있고 then 함수는 하나의 프로미스 대상을 되돌려줍니다. 따라서 이 프로미스 대상은 다음에 어떤 방법을 집행할지 결정합니다.

    promise와 관련된 문제


    n 방법과 settimeout이라는 문제는 매우 전형적이다. 사실은 조금만 알면 된다. settimeout은 다음'사건 순환'때부터 실행된다.Promise.then ()은 이벤트 사이클이 끝날 때 실행됩니다.
    setTimeout(function () {
        console.log('1');
    }, 0);
      
    Promise.resolve().then(function () {
        console.log('2');
    });
    console.log('3');

    출력 3 2 1
    사실 이런 방법들은 그래도 많이 사용하고 많이 연습해야만 비로소 뜻대로 될 수 있다

    좋은 웹페이지 즐겨찾기