전단 원리비동기 및 단일 스 레 드

3870 단어 promise자바 script
단일 스 레 드
  • 단일 스 레 드 가 무엇 입 니까?
  • Javascript " "(single thread)
      "   ",             。
           ,     ,        ,         ,    。
    
      JS    JS  (JS       ,   JS    )
  • 단일 스 레 드 의 장점 과 발생 하 는 문제
  •   :
            ,        
    
        :
               ,            ,          。
    
             (  ),         Javascript       (     ),
                ,        。
  • 단일 스 레 드 솔 루 션
  • 단일 스 레 드 (JS 엔진 스 레 드) 가 끊 기지 않 기 위해 나 타 났 습 니 다. " "이 해결 방안
    비동기
  • 전단 에서 어떤 조작 이 비동기 조작 에 속 합 니까?
  • 1、   
    2、ajax  
    3、io  
    
      :            
    
      :           ,             (    )  
  • 비동기 프로 그래 밍 처리 방식
  • 1、    
    2、Promise
    3、await/async  (      )

    리 턴 함수 (호환성 이 가장 좋 지만 추천 하지 않 음)
    리 턴 함수 방식 의 가장 큰 문 제 는: 리 턴 지옥 은 코드 열독 성 이 떨 어 지고 프로젝트 의 유지 성 이 떨어진다 는 것 이다.
    setTimeout(function (name) {
      var catList = name + ',';
    
      setTimeout(function (name) {
        catList += name + ',';
    
        setTimeout(function (name) {
          catList += name + ',';
          
        }, 1, 'Lynx');
        
      }, 1, 'Jaguar');
    
    }, 1, 'Panther');
    
                       ,    ,       

    Promise ES6 주로 해결 하기 위해 서 입 니 다.
    질문
  • 세 가지 상태
  • 1、pending:    ,  then()         
    2、resolved:    
    3、rejected:    
  • 기본 용법
  •   Promise    ,             
    
          :
    const p = new Promise((resolve, reject)=>{ });
    
        
    const p = new Promise(function(resolve, reject){})

    주의:
    1. 전 삼 함수 의 곧 실 행 될 겁 니 다. 그리고...
    2. 전 참 함수 내부 에 resolve () 또는 reject () 방법 이 호출 되 지 않 았 다 면 Promise 대상 의 상 태 는 그대로 입 니 다. , 뒤에pending
    3. 전 삼 함수 의 함수 체 내 에 주로 넣 는 것 은?then()
    4. 전 삼 함수 의 함수 체 내, , Promise 인 스 턴 스 의 상태 가 resolve()
    5. 전 삼 함수 의 함수 체 내, pending resolved, Promise 인 스 턴 스 의 상태 가 reject()
    6. resolve () 또는 reject () 는 하나의 인자 만 전달 할 수 있 습 니 다.
  • 실례 방법 pending rejected
  •   :
    const p = new Promise((resolve, reject)=>{ });
    p.then(data=>{ }).then(data=>{ })
    
    then      :
          Promise  ,   then() Promise    
    
    1、p resolved   ,then      ,       :
    const pp = p.then(data=>{
        console.log('go');
    });
    
      pp     p resolved,       undefined
    
    2、p resolved   ,then      ,        Promise  :
    const pp = p.then(data=>{
        return '  ';
    });
    
      pp     p resolved,       '  '
    
    3、p resolved   ,then      ,       Promise  :
    const pp = p.then(data=>{
        return new Promise((resolve, reject)=>{
            reject();
        });
    });
    
      pp    rejected(      ),       undefined
    
    4、p rejected   ,then                :
    const pp = p.then(data=>{ });
    
      pp     p rejected,         p

    주의:
    1. resolve () 또는 reject () 방법 을 호출 할 때 인자 가 하나 도 전달 되 지 않 으 면 then () 에서 전달 하 는 함수 에 수신 인자 가 없습니다.then
    2. Promise 상태 가 아니라면data undefined, 그럼 then 중 전의
    함수 가 실 행 됩 니 다.pending
    3. then () 을 호출 할 때 함 수 를 매개 변수 로 전달 하지 않 으 면
  • 실례 방법 Promise , ,
  • 주로 처리 에 쓰 인 다catch
    .catch(error=>{ })    then   
    
       
    then(null, error=>{ })   then(undefined, error=>{ })
    
    catch    :
           Promise  ,              then      
    
           ,     rejected,       undefined
  • 정적 방법 rejected
  •   Promise      ,     Promise       ,      Promise  
  • 정적 방법 all
  • await/async race (강력 추천)
    JS 비동기 실현 원리ES7
  • 퀘 스 트 종류
  • 좋은 웹페이지 즐겨찾기