ES6 -- async 함수
2468 단어 ES6
async
함수는 여러 개의 비동기적인 조작으로 볼 수 있고 포장된 하나의 Promise 대상으로 볼 수 있다. await
명령은 내부then
명령의 문법당이다.1. 기본용법
async
함수는 프로미스 대상을 되돌려줍니다. then
방법으로 리셋 함수를 추가할 수 있습니다.함수가 실행될 때 await
를 만나면 먼저 되돌아와 비동기적인 조작이 완성될 때까지 기다린 다음에 함수 체내 뒤의 문장을 실행한다.async function getStockPriceByName(name) {
const symbol = await getStockSymbol(name);
const stockPrice = await getStockPrice(symbol);
return stockPrice;
}
getStockPriceByName('goog').then(function (result) {
console.log(result);
});
2. 문법
async
함수는 Promise 객체를 반환합니다.async
함수 내부return
문장이 되돌아오는 값은 then
방법 리셋 함수의 매개 변수가 된다.async function f() {
return 'hello world';
}
f().then(v => console.log(v))
// "hello world"
위 코드에서 함수
f
내부return
명령이 되돌아오는 값은 then
방법의 리셋 함수에 의해 수신됩니다.async
함수 내부에서 오류가 발생하면 되돌아오는 Promise 대상reject
상태가 됩니다.던진 오류 대상은 catch
방법 리셋 함수에 의해 수신됩니다.async function f() {
throw new Error(' ');
}
f().then(
v => console.log(v),
e => console.log(e)
)
// Error:
3. Promise 객체의 상태 변화
async
함수가 되돌아오는 Promise 대상은 내부 모든await
명령 뒤에 있는 Promise 대상이 실행될 때까지 기다려야 상태 변화가 발생합니다. return
문장이나 버퍼링 오류가 발생하지 않는 한.즉 async
함수 내부의 비동기 조작이 끝나야만 then
방법이 지정한 리셋 함수를 실행할 수 있다는 것이다.다음은 하나의 예다.
async function getTitle(url) {
let response = await fetch(url);
let html = await response.text();
return html.match(/([\s\S]+)/i)[1];
}
getTitle('https://tc39.github.io/ecma262/').then(console.log)
// "ECMAScript 2017 Language Specification"
위 코드에서 함수
getTitle
내부에는 세 가지 조작이 있는데 그것이 바로 웹 페이지를 캡처하고 텍스트를 꺼내며 페이지 제목과 일치하는 것이다.이 세 가지 조작이 모두 완성되어야만 then
방법 중의 console.log
를 실행할 수 있다.4. 주의점 사용
await
명령 뒤의 Promise
대상은 실행 결과rejected
일 수 있으므로 await
명령을 try...catch
코드 블록에 넣는 것이 좋다.async function myFunction() {
try {
await somethingThatReturnsAPromise();
} catch (err) {
console.log(err);
}
}
//
async function myFunction() {
await somethingThatReturnsAPromise()
.catch(function (err) {
console.log(err);
});
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(Javascript) ES6의 주요 특징 정리let을 사용하면 선언한 변수는 블록안에서만 유효하게 된다. const 역시 마찬가지로 블록스코프를 따른다 .const 와 let의 차이점은 const 는 상수로 값을 할당한다는 점이다. 따라서 값을 변경시키려고 하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.