Angular then() 메서드
then()
메서드를 소개하고 Angular에서 promises
에 대해 논의합니다.
Angular에서 then()
메서드 사용
then()
은 두 번째 인수로 사용되는 Angular promise
메소드입니다. then()
메소드는 promise
가 거부된 경우에만 실행됩니다.
then()
메소드를 자세히 이해하려면 먼저 Angular의 promise
에 대해 배워야 합니다.
Angular의 promise
애플리케이션이 단순해지면 콜백 함수가 즉시 호출되지만, 최신 브라우저용 JavaScript로 애플리케이션이 복잡해지고 풍부해지면서 콜백이 번거로워졌습니다. 콜백 기능이 느려지고 데이터를 요청하는 동안 가끔 멈추는 경우가 있습니다.
ES6
의 솔루션으로 promise
가 도입되어 문제를 해결하고 단순화했습니다. 비동기 함수를 더 잘 작성하고 유지 관리하기 쉬운 강력한 추상화입니다.
promise
는 주로 비동기식 작업을 동기식으로 처리하는 데 사용되는 API 추상화입니다.
다음 명령을 사용하여 새 애플리케이션을 만들어 보겠습니다.
# angular
ng new my-app
Angular에서 새 애플리케이션을 만든 후 애플리케이션 디렉토리로 이동합니다.
# angular
cd my-app
이제 앱을 실행하여 모든 종속 항목이 올바르게 설치되었는지 확인하겠습니다.
# angular
ng serve --open
다음으로 1초의 대기 시간 후에 값을 반환하는 promise
를 만듭니다. 먼저 HttpClientModule
을 가져와서 아래와 같이 app.module.ts
에 있는 AppModule
의 가져오기 배열에 추가합니다.
# angular
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app.component';
import { HelloComponent } from './hello.component';
@NgModule({
imports: [ BrowserModule, FormsModule, HttpClientModule ],
declarations: [ AppComponent, HelloComponent ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
그런 다음 app.component.ts
내부에 HttpClient
를 주입하기 시작하고 생성자를 만들고 API URL을 정의합니다.
# angular
import { Component, VERSION, OnInit } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit {
name = 'Angular ' + VERSION.major;
apiUrl = 'https://jsonplaceholder.typicode.com/todos/1';
constructor(private httpClient: HttpClient){}
}
일단 HttpClient
를 주입하고 나면 fetchJson()
을 정의하고 ngOnInit()
에서 호출하므로 애플리케이션이 로드될 때마다 초기화됩니다. 아래와 같이 app.component.ts
의 코드에는 추가 코드가 있습니다.
# angular
ngOnInit(){
this.fetchJson();
}
private fetchJson(){}
관찰 가능한 항목을 반환하기 위해 get()
메서드를 사용하여 GET HTTP
요청을 보냅니다. toPromise()
를 사용하여 promise
로 변환하고 then()
메서드를 사용합니다.
# angular
private fetchJson(){
const promise = this.httpClient.get(this.apiUrl).toPromise();
console.log(promise);
promise.then((data)=>{
console.log("Promise resolved with: " + JSON.stringify(data));
}).catch((error)=>{
console.log("Promise rejected with " + JSON.stringify(error));
});
}
출력:
위의 출력에서 promise
가 해결되었으며 fetch를 약속한 then()
메서드를 사용하여 데이터도 반환했습니다. 두 번째 인수로 약속과 함께 then()
메서드를 사용할 수 있습니다.
Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.
LinkedIn