비동기 / await를 자바 스크립트의 간단한 이해

비동기 / 기다리고 있습니다 무엇입니까?

  • 비동기 기능 : 함수 발생기는 문법 설탕입니다
  • 비동기 함수 약속 오브젝트 후 콜백 방법을 사용하여 첨가 될 수 리턴한다. 함수가 실행되면, 이벤트는 비동기 작업이 생체 내에서 기능 후에 실행 문 다음에 완료 될 때까지 기다리고 다시 이동하는 것입니다.
  • 비동기 / 약속을 기다리고, 비 - 블로킹
  • 약속 비동기 기능은 객체가 매개 변수로 명령을 기다리고 있습니다 반환

둘째, 문법

1, 약속 개체를 반환

비동기 함수는 약속 개체를 반환합니다.

문에 의해 반환 된 내부 비동기 함수의 반환 값은, 다음 메소드 매개 변수 콜백 함수 될 것입니다.

비동기 함수 f () {
     반환  ' 세계 안녕하세요 ' ; 
} 

F (). 다음 (V => CONSOLE.LOG (V))
 // "안녕하세요!"


내부 비동기 함수 미스를 초래할 수있는 에러 상태 객체를 반환 거부된다 던진다. 오류 개체가 발생 콜백 함수는 캐치 방법을 수신

비동기 함수 F () {
     던져  새로운 새로운 오류 ( ' 잘못 ' ); 
} 

F ()는 다음 (. 
    V => 을 console.log (V), 
    E => 을 console.log (E) 
) 
// 오류 : 오류


2 물체 상태 변화 약속

실행 비동기 동작 비동기 내부 기능, 방법 지정된 콜백 함수를 실행한다.

비동기 함수 인 getTitle (URL) { 
    응답하자 = await를 (URL) 가져 오기; 
    HTML하자 =이 기다리고 있습니다 ) (response.text을;
    반환 html.match (/ <TITLE> ([\ S \ S] +) <\ / TITLE> / I) [ 1 ]; 
} 
인 getTitle ( ' https://tc39.github.io/ecma262/ ' ) 그 때는 (CONSOLE.LOG)
 // "ECMAScript를 2017 언어 사양"

3, 명령을 기다리고 있습니다

일반적으로, 명령이 약속 개체를 다음 기다리고 있습니다. 그것은 객체로 전환됩니다하지 않으면 즉시 약속을 해결.

약속, 객체가 거부 상태가되면 다음 명령을 기다린다 캐치 공정 변수는 콜백 함수에 의해 수신 거부한다.

로 긴 후 전체 비동기 기능이 중단됩니다 거부 실행에 약속을 다음과 같은 성명을 기다리고로

비동기 함수 F () {
     await를 Promise.reject ( ' 잘못 ' );
     (가) 기다리고 Promise.resolve ( ' 안녕하세요 세계 ' ); // 실행되지 
}


때때로, 우리는 비동기 작업 전에 실패하고, 비동기 작업의 뒷면을 아프게하지 않는 경우에도 있기를 바랍니다. 그럼 당신은 처음 그래서 관계없이 비동기 작업이 성공 여부, 두 번째는 실행을 기다리는 것, 내부 Try ... Catch 구조를 기다리고 넣을 수 있습니다.

비동기 함수 f ()는 {
     시도 {
         기다린다 (Promise.reject를 ' 出错了' ); 
    } 캐치 (전자) { 
    } 
    반환  기다리고 Promise.resolve ( ' 안녕하세요 세계 ' ); 
} 

F () 
그 때는 (V => CONSOLE.LOG (V))
 // 안녕하세요


또 다른 방법은 약속이 캐치 대화 방법 뒤에 객체를 기다리고하는 것입니다, 처리 오류가 앞에 발생할 수 있습니다.

비동기 함수 f () {
     기다리고 Promise.reject를 ( ' 出错了' ) 
    . 캐치 (E => CONSOLE.LOG의 (e));
    반환  기다리고 Promise.resolve ( ' 안녕하세요 세계 ' ); 
} 

F () 
그 때는 (V => CONSOLE.LOG (V))
 // 出错了
 // 안녕하세요


4, 에러 핸들링

후자의 오차는 비동기 작업을 기다리는 경우 비동기 약속 기능이 거부 리턴하기 위해 그 목적은 동일하다.

은 try ... catch 블록에 배치 된 오차를 방지하는 방법.

비동기 함수 F () {
     은 try {
         기다리고 있습니다  새로운 새로운 약속 (기능 (해결, 거부) {
             던져  새로운 새로운 오류 ( ' 잘못 ' ); 
        }); 
    } 캐치 (E) { 
    } 
    반환  AWAIT ( ' 안녕하세요 세계 ' ); 
} 
경우 은 try ... 캐치 구조에 통합 할 수 있습니다 더 await를 명령이 있습니다. 

비동기 함수는 메인 () {
     은 try {
         CONST VAL1 = 7 의 AWAIT ; firstStep ()
         CONST 을 val2 = AWAITsecondStep (VAL1);
        CONST val3 =가 기다리고 thirdStep (VAL1, val2만큼)를; 
        (CONSOLE.LOG ' 최종 : ' , val3); 
    } 
    캐치 (ERR) { 
        console.error (ERR); 
    } 
}

개요

함수 전에  async 키 두 가지 기능이 있습니다 :

  1. 항상 약속을 반환합니다.
  2. 상기 허용 기다린다.

약속 전에 기다리고 키워드에서 약속 자바 스크립트는, 처리 대기 :

  1. 오류가있는 경우 예외가 똑같이 던져 오류라고 그 장소에 같이 발생합니다.
  2. 그렇지 않으면 반환 값은, 우리는에 값을 할당 할 수 있습니다.

 

추천

출처www.cnblogs.com/Mr-Tao/p/11108592.html