TS非同期関数
9324 ワード
非同期関数を作成するには:
만들고자 하는 함수 앞에 async를 붙여주고 promise 객체를 반환하는 함수를 만들어서 해당
함수 앞에 await를 붙여주면 비동기 함수를 작성할 수 있다. 그럴 경우 비동기 함수가 사용자
가 의도한 대로 동기적으로 작동한다.
간단한 작성 방법이 존재하기 때문에 콜백 지옥에 빠지지 않고 보다 직관적으로 코드를 작성할
수 있다. 예시를 통해 살펴보기로 하자.
Promiseを返すデフォルトのスケルトン関数の作成function delay(ms: string): Promise<string> {
return new Promise(() => {})
}
Promiseに戻るデフォルトのスケルトン関数にコールバック関数を配置function delay(ms: number): Promise<string> {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.floor(Math.random() * 10) % 2 === 0) {
resolve('success');
} else {
reject('failure');
}
}, ms);
});
}
作成する関数を待機し、Promiseオブジェクトに戻る関数を待機します.function delay(ms: number): Promise<string> {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (Math.floor(Math.random() * 10) % 2 === 0) {
resolve('success');
} else {
reject('failure');
}
}, ms);
});
}
async function main() {
try {
const result = await delay(3000);
console.log('done async! ' + result);
} catch(e) {
console.error('fail async! ' + e);
}
}
main();
위의 구문에서 delay 함수가 resolve를 반환 할 경우 또는 rej를 반환할 경우
그 아래 코드는 위의 코드가 실행된 뒤에 동기적으로 실행되게 된다. 이 부분이 포
인트!
Reference
この問題について(TS非同期関数), 我々は、より多くの情報をここで見つけました https://velog.io/@woodstock1993/TS-비동기-함수テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol