TypeScript에서 비동기/와이트 구문은 어떻게 작동하나?
나는 C#의 비동기/기다림에 꽤 익숙하고 1년 정도 TypeScript를 사용하고 있는데, 누구라도 TypeScript에서 어떻게 작동하는지 간단히 설명해 줄 수 있을까?
실제 구현에 대한 명확한 관점을 제시하기 때문에 예에 각도/jQuery 약속이 포함되어 있다면 매우 도움이 될 것이다.
핵심은 ES6 Promise(ES6 약속)나 이를 구현하는 것을 사용하는 것이다.PromiseLike
그리고PromiseConstructorLike
lib.d.ts에 있는 인터페이스(자세한 내용 읽기).jQuery 약속은 이러한 인터페이스를 구현하지 않기 때문에 그것과 함께 작동하지 않을 것이다.
ES6 약속을 사용하는 간단한 예는 다음과 같다.
function getStringFromWebServerAsync(url: string) {
return new Promise<string>((resolve, reject) => {
// note: could be written `$.get(url).done(resolve).fail(reject);`,
// but I expanded it out for clarity
$.get(url).done((data) => {
resolve(data);
}).fail((err) => {
reject(err);
});
});
}
async function asyncExample() {
try {
const data = await getStringFromWebServerAsync("http://localhost/GetAString");
console.log(data);
}
catch (err) {
console.log(err);
}
}
asyncExample();
다음이 포함된 모든 코드는await
진술은 다음 범위 내에서 이루어져야 한다.async
그래서 나는 코드를 하나로 쌌다.그렇긴 하지만, 곧 나올 제안에는 "최상위 수준의 대기"가 추가되는데, 이는 TypeScript 3.8에서 이용할 수 있을 것이다.여기에서 자세히 읽고 TypeScript에 대한 자세한 내용은 여기를 참조하십시오.
비동기/대기 모드를 사용하려면 Typecript 1.7의 ES6을 대상으로 해야 한다는 점에 유의하십시오.낮은 버전의 Visual Studio 출력
TS1308 'await' expression is only allowed within an async function.
그리고
TS1311 Async functions are only available when targeting ECMAScript 6 and higher.
자세한 내용은 http://blogs.msdn.com/b/typescript/archive/2015/11/03/what-about-async-await.aspx를 참조하십시오.
참조URL: https://stackoverflow.com/questions/32401741/how-does-the-async-await-syntax-work-in-typescript
'IT이야기' 카테고리의 다른 글
Vuejs 오류:클라이언트측 렌더링된 가상 DOM 트리가 서버에서 렌더링된 트리와 일치하지 않음 (0) | 2022.03.14 |
---|---|
XState가 유휴 상태로 유지되지 않음 (0) | 2022.03.14 |
이미지 주소를 어레이에 배치하고 소스 VUE JS에서 해당 어레이 인덱스를 사용하는 방법 (0) | 2022.03.14 |
반응.js: 한 구성 요소를 다른 구성 요소로 포장 (0) | 2022.03.14 |
기본 + Redex-perist 반응: 키(블랙리스트)를 무시하는 방법? (0) | 2022.03.14 |