Promise - 포괄적인 소개

손으로 쓴 약속

  1. Promise의 역할: 비동기 콜백 지옥의 문제를 해결하는 것,
    즉 비동기 콜백 함수의 중첩된 쓰기 방법을 매개변수로 .then의 연쇄 쓰기 방법으로 변경하는 것입니다.

  2. Promise 작성 방법:
    const p = new Promise((resolve, reject) => { resolve 및 reject 는 둘 다 함수입니다.

    resolve('successful data')를 실행하면 p.then(res => res)로 성공한 데이터를 얻습니다.
    reject('failed data')를 실행하면 p.catch(err => err)로 실패한 데이터를 얻습니다.
    })

const oP = new Promise((resolve, reject) => {
    
    
    // Q1:.then中的回调函数,什么时候 执行?
    // 执行 resolve() 函数,立即执行 .then 中的回调函数。
    // 补充:若 resolve 有实参,那么 实参会作为  .then 的回调函数的  实参值。

    // Q2: .catch 中的回调函数,什么时候 执行?
    // 执行 reject() 函数,立即执行 .catch 中的 回调函数。
    // 补充1:若 reject 有实参,那么 实参会作为  .catch 的回调函数的  实参值。
    // 补充2:若 本函数执行了  reject 函数,而 实例对象没有 catch 的实例方法,则 会 报错。

    // Q3:resolve 和 reject,能 都执行吗?
    // A:resolve 和 reject 两者,只能执行其一。
    setTimeout(() => {
    
    
      resolve('resolve-then');
    }, 2000);
  });
  oP.then((res) => {
    
    
    console.log('then中的回调函数执行', res);
  })
    .catch((err) => {
    
    
      console.log('catch中的回调函数执行', err);
    })
    .finally(() => {
    
    
      console.log('finally');
    });

요약하다:

  1. Promise 생성자의 유일한 매개변수는 함수입니다.
    1) 이 함수는 즉시 실행됩니다
    . 2) 함수 내에서 비동기 코드가 발생할 수 있습니다 . 3
    ) 이 함수 내에는 세 가지 상태가 있습니다.
    실행.
    2- 이행: 해결 기능이 실행되고 인스턴스 개체가 이동함을 나타냅니다.
    3- 거부됨: 거부 기능이 실행되고 인스턴스 개체가 이동함을 나타냅니다. catch
    4) 함수의 내부 상태는 보류 -> 이행 또는 보류 -> 거부에서 변경
    // 위 두 프로세스가 발생하면 여기서 끝납니다;! ! 뒤집을 수 없는! !
  2. Promise의 인스턴스 객체에는 세 가지 인스턴스 메서드가 있습니다.
    1) oP.then(callback)
    2) oP.catch(catchCallback)
    3) oP.finally(finallyCallback)
  3. oP
    .then(res => { return xxx }) .then(res2 => { // 참고: res2의 값은 xxx }) // 이전 .then 콜백 함수의 반환 값을 다음으로 사용할 수 있습니다. 그런 다음 콜백 함수가 값을 받았습니다. // 참고: 반환 값은 일반 데이터이거나 Promise의 인스턴스 개체일 수 있습니다.






おすすめ

転載: blog.csdn.net/lj1641719803hh/article/details/128335270