자바 스크립트 대기

| | | |

ES6에 도입된 Promises를 사용하면 여러 콜백 함수를 처리하지 않고도 비동기 코드를 쉽게 작성할 수 있습니다. Promise를 사용하면 작성하고 유지 관리하기 어려운 다단계 콜백에 대해 걱정할 필요가 없습니다.

JavaScript에는 Promise를 사용하여 비동기 코드를 훨씬 더 쉽게 작성할 수 있는 또 다른 기능이 있습니다. 비동기 함수 / 참석하다. 이것들을 통해 동기식 보기를 수행하지만 비동기식 루틴을 만드는 코드를 작성할 수 있습니다.

이 가이드에서는 비동기식/대기 기능이 무엇이며 코드에서 이를 사용할 수 있는 방법에 대해 논의할 것입니다. 시작하겠습니다.

약속: 새로 고침

비동기/대기 기능에 대해 이야기하기 전에 약속을 요약해야 합니다. 약속은 비동기 작업을 나타냅니다. 작업을 수행할 코드를 나타내며 작업이 성공하면 값을 반환합니다. 그렇지 않으면 프로그램의 나머지 부분에 오류가 반환됩니다.

Promise는 Promise가 생성될 때 알려지지 않은 값을 나타냅니다. 약속은 단지 미래의 가치가 코드에 반환될 것이라는 약속입니다. Promise는 객체이므로 모두 대문자여야 합니다.

이 시나리오를 고려하십시오. API에서 리소스를 검색해야 합니다. 요청을 처리하는 데 1~2초 정도 걸립니다. 사용자가 요청이 처리되기를 기다리게 하는 대신 나머지 프로그램이 계속 작동할 수 있도록 코드를 Promise로 이동할 수 있습니다.

즉, 데이터를 추출하는 동안 웹 사이트 UI. 값이 반환되는 즉시 Promise는 기본 프로그램으로 전송합니다.

다음은 Promise의 예입니다.

코드 피드백: 귀하의 쿠키가 전송되었습니다! sendCookies.then() 메서드를 실행하면 약속이 해제됩니다. 프로그램은 1000밀리초를 기다린 다음 "귀하의 쿠키가 전송되었습니다!" 값을 반환합니다. " 주 프로그램

Async 및 Wait 사용 방법

함수 및 async/wait에서 코드 실행 대기 문은 `약속이 반환될 때까지 비동기 함수 내에서 차단됩니다. 이것이 개발자가 종종 비동기/비동기 대기 기능이 있지만 비동기 작업이 수행되는 것을 지켜본다고 주장합니다.

다음 예를 고려하십시오.

코드 피드백: 쿠키가 전송되었습니다! sendCookies() 함수는 "귀하의 쿠키가 전송되었습니다" 값을 반환하는 데 1000밀리초가 걸립니다. 이 경우 코드가 약속이 해결되거나 거부될 때까지 기다리도록 비동기 함수를 선언했습니다.

"async" 함수 키워드는 코드에 비동기를 수행하기를 원한다는 것을 알려줍니다. 우리의 기능에서 작업. "예상" 단어 - 키는 프로그램을 계속 실행하기 전에 sendCookies() 약속이 반환될 때까지 기다리는 코드를 나타냅니다.

비동기 함수는 항상 약속을 반환합니다.

Async 및 With 사용 Multiple Pass Wait

비동기/대기 기능은 작업해야 하는 여러 약속이 있을 때 가장 자주 사용됩니다. 이를 체인 프라미스(chaining promise)라고 합니다. 실제로 코드는 다음 단계로 넘어가기 전에 각 단계로의 약속이 돌아올 때까지 기다릴 것입니다.

우리 코드는 다음을 반환합니다.

각 단계는 1000밀리초가 걸립니다!. sendCookies() 함수는 ProcessOrder() 함수에서 반환이 약속될 때까지 실행되지 않습니다.

비동기 표현식

비동기/대기 함수를 사용할 수 있는 세 가지 방법이 있습니다.

첫 번째는 우리가 지난 예제에서 보여준 접근 방식입니다: 함수를 선언하는 것입니다. 우리의 예에서 우리는 약속을 반환하는 함수를 선언했기 때문에 "async" 및 "expectation" 단어 - key를 사용하여 이러한 기능을 수행했습니다.

방향 함수를 사용하여 비동기 함수를 선언할 수도 있습니다.

이 코드는 다음을 반환합니다: 귀하의 쿠키가 전송되었습니다! 이것은 첫 번째 예와 동일하지만 main() 함수를 선언하는 대신 화살표 함수를 사용했습니다.

마찬가지로 당신도 함수의 표현식 구문을 사용할 수 있습니다.

이 반환 코드: 쿠키가 전송되었습니다. 보시다시피, 출력은 다시 l 또는 자체입니다. 유일한 차이점은 함수를 선언한 방법입니다.

사실 이 구문은 마지막 예제와 매우 유사합니다. 붐 함수를 사용하는 대신 키 "함수()"라는 단어를 사용합니다.

비동기/대기 함수를 선언하는 이보다 좋은 방법은 없습니다. 그것은 모두 당신이 쓰고 있는 프로그램과 당신이 선호하는 구문에 달려 있습니다. 지시 함수가 가장 간결한 방법이라고 주장할 수 있지만 다른 경우에는 비동기/대기 함수를 선언하는 다른 방법이 더 나을 수 있습니다.

Async / Wait를 사용하여 웹 요청 처리

async /의 가장 일반적인 용도 중 하나는 Promise 기반 API인 Fetch As()를 사용하여 웹 요청을 처리하기 위한 await 함수입니다. 검색을 위한 JavaScript 초보자 가이드

이 예를 들어보겠습니다.

코드 반환:

retrieveComments() 함수를 실행할 때 "wait" word - key function to wait" 가져오기 실행을 사용합니다. () 문. 이것은 웹 요청이 처리될 때까지 나머지 일정이 계속되지 않는다는 것을 의미합니다. 실제로 함수는 약속을 반환합니다.

fetch() 함수에 의해 약속이 반환되면 fetch (), 반환된 값을 JSON으로 변환한 다음 모든 주석의 이름 목록을 가져올 개체를 식별하고 콘솔에 출력합니다.

오류 처리 방법

아, 코드에서 오류가 발생하지 않았으면 하는 바램입니다. 하지만 그들은 그렇게 하고 거기에서 개발자는 뭔가를 계획해야 합니다. 비동기 함수, 오류 처리는 동기 try ... catch를 사용하여 수행됩니다. 다음 코드를 고려하십시오.

우리 코드는 다음을 반환합니다.

이 예에서는 반환된 경우 .catch()를 사용했습니다. 이 경우 require("Error")를 사용하여 오류가 발생했음을 코드에 알립니다.

이 문이 실행되면 .catch() 선언이 시작되고 오류가 인쇄됩니다.

마찬가지로 비동기 함수는 구문 오류를 감지할 수 있습니다.

리소스를 검색하려고 할 때 코드가 다음을 반환합니다. NetworkError. 이 예에서는 try / catch 문을 사용하여 wait 메서드가 성공 약속을 반환했는지 확인했습니다. 다시 말하지만, API가 유효하지 않아 프로그램이 약속을 거부합니다. 이런 일이 발생하면 "catch"가 try / catch 블록에서 실행되어 콘솔에 오류를 기록합니다.

결론

비동기/대기 함수는 비동기 작업을 작성하는 데 도움이 됩니다. 코드에서. 비동기 함수가 선언되면 "대기" 단어 - 키를 사용하여 작업 결과를 기다릴 수 있습니다. wait 키워드는 약속을 반환하는 함수와 함께 사용해야 합니다.

이제 준비가 되었습니다. 비동기 자바스크립트 함수 사용 / 전문가처럼 기다리세요!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method