2017-12-27 36 views
1

교육 목적으로 Angular 2로 서버에서 긴 응답을 시뮬레이트해야합니다. 코드가 있습니다Angular 2에서 긴 응답을 시뮬레이트하십시오.

getTasks() : Observable<Task[]> { 
    return this.http.get('data/tasks.json').map(response => { 
     return response.json(); 
    }); 
} 

// using 
getTasks().subscribe(groups => { 
    this.tasks = groups; 
}); 

및 응답 시간이 1 초 이상 필요합니다. 각도 1.5에서 나는 이런 식으로 이런 짓을 각도 2에서

this.getTasks = function() { 
    return $http.get("data/tasks.json").then(function (response) { 
     return $timeout(function() { 
      return response.data; 
     }, 1000); 
    }; 
} 

내가

getTasks() : Observable<Task[]> { 
    return this.http.get('data/tasks.json').map(response => {    
     return Observable.of(response.json()).delay(1000); 
    }); 
} 

getTasks() : Observable<Task[]> { 
    return this.http.get('data/tasks.json').map(response => { 
     return Observable.create((obs: Observable<Task[]>) => { 
      obs.next(response.json()); 
      obs.complete(); 
     ).delay(1000);   
    }); 
} 

을 시도했지만 타이프 라이터 컴파일 오류가 있거나 getTasks().subscribe 가져 및 관찰 가능한이 post에 따라 작업 컬렉션이 아닙니다. 내가 뭔가를 놓친 것처럼 보입니다. 도와주세요. 고맙습니다.

답변

4

형식 불일치로 인해 오류가 발생했습니다. getTasks 메서드는 Observable<Task[]> 유형을 반환하지만 맵 메서드는 배열 (Task []) 유형 대신 관찰 가능을 반환합니다. observable을 정상으로 되돌리고 지연 방법을 추가하여 observable emit을 지연하면됩니다.

getTasks() : Observable<Task[]> { 
    return this.http.get('data/tasks.json').map(response => { 
     return response.json(); 
    }) 
    .delay(1000); 
} 
+0

매우 고맙습니다. –