비동기식 JavaScript 태그

7232 단어 JavaScriptNodetech
자바스크립트의 async/await/Proomise에 대한 정보가 골목마다 넘쳐나지만 정보가 낡고 미묘한 오류가 많다.그런 문헌을 읽은 신인군은 혼란스럽고 불쌍해서 먼저 파악하고 싶은 요점을 정리했다.

async/await의 기본 사용법

  • await에서 async function 대기
  • Promise로 돌아가는 라이브러리/함수 await에서 대기
  • async function 반환 가능
  • async function 가능throw
  • 이거 누르면 90% 칠 수 있어.
    예를 들어, 나는 어떤 WebAPI를 쳐서 다른 WebAPI에 POST를 쓴 다음에 결과의 처리를 되돌려 보려고 한다.fetch() Promise로 돌아갑니다.
    const fetch = require("node-fetch");
    
    async function cron(msg) {
        const getResponse = await fetch("https://httpbin.org/get");
        const json = await getResponse.json();
    
        const request = {
            method: "POST",
            body: "my IP address=" + json.origin
        };
        const postResponse = await fetch("https://httpbin.org/post", request);
        const postJson = await postResponse.json();
        return postJson;
    }
    
    (async function () {
        const result1 = await cron("hoge");
        console.log(JSON.stringify(result1, null, 2));
    })();
    
    전망이 좋다.
    예외 처리 프로그램이 async/await라면 직접 쓸 수도 있습니다.
    async function throwError() {
        throw "ERROR";
        return "result";
    }
    
    (async function () {
        try {
            const result2 = await throwError()
            console.log(result2)  // ここは出力されない
        } catch (err) {
            console.log(err)
        }
    })();
    

    비동기식 JavaScript의 역모드


    아니요 () new Promise


    Promise를 반환하는 함수는 async function으로 대체할 수 있습니다.Promise를 사용하면 콜백 형태로 바뀌어 어쨌든 전망이 나빠진다.new Promise()가 가능한 것은 헤이세이다.이 시대에 쓴 코드에 async를 사용하세요.
    하지만 구고 등은 호출 형식만 지원하는 경우도 있다.setTimeout과 같습니다.이런 API와 사귈 때만 Promise를 사용하세요.

    await에서 Promise 대상을 기다리세요


    Promise 객체는 Promise.then()에 콜백 함수를 등록해도 결과를 얻을 수 있습니다.그러나 아무래도 호출이어서 가독성이 떨어졌다.
    await를 통해 Promise 객체의 반환 결과를 얻을 수 있습니다.
    await를 사용하세요.

    좋은 웹페이지 즐겨찾기