2017-11-11 1 views
1

최근에 비동기/대기 열차에서 최근에 건너 뛰었으므로 여전히 몇 가지 개념을 파악하려고합니다.요청시 비동기 사용

나는 async/await과 그 패키지를 아직 제공하지 않는 패키지를 가능한 한 많이 전환하여 시작했는데 약속 된 버전을 찾았습니다.

어쨌든 request-promise-native 모듈을 우연히 만났습니다. 요청과 같지만 약속을 활용합니다. 내가 볼 수 있으리라 확신합니다.

저는 async/await을 사용하여 실험 해봤지만 작동하지만 제대로 작동하는지 확신 할 수 없습니다. 사실 약속을 사용하는 것보다 장점이 있는지 확실하지 않지만 변환중인 특정 함수에는 많은 콜백이 있으므로 최소한의 탭 양을 유지하려고합니다.

testFunction: async (param) => { 
    let results; 

    try { 
     results = await request(requestOptions); 
    } catch (e) { 
     return (e); 
    } 

    // Do stuff with results 

지금이 작동하고 내가 원하는 결과를 얻을 수 있지만, 내 질문 1. 비동기를 사용하려면이 경우에도 올바른 방법입니다/기다리고 2.이 라이브러리에서 제공하는 표준 약속을 통해이 어떤 혜택입니다 ?

답변

3
  1. 실제로는 async/await을 올바르게 사용하고 있습니다. 함수 정의 앞에 정확히 async을 입력해야하며 await 연산자는 사용자가 수행 한 것과 똑같이 Promise를 반환하는 코드 앞에 와야합니다. Promise가 거부 된 경우 await 표현식이 거부 된 값 (see MDN)을 던지기 때문에 awaittry/catch에 넣는 것도 올바른 방법입니다.
  2. 이점은 동기로 표시되어 쉽게 따르고 이해하고 추론 할 수있는 코드입니다.
+2

통찰력을 가져 주셔서 감사합니다. 올바르게 사용하고 있다는 것을 알고 있습니다. 나는 그것이 try/catch로 이상하게 느껴진다 고 생각하지만 이전에 가지고 있던 콜백의 양보다 훨씬 낫다! –

관련 문제