2016-11-22 1 views
1

나는 angular2에서 간단한 약속 패턴을 구현하려고 삼진하고 있습니다. 아이디어는 두 가지 약속이 해결 될 때 코드 블록을 실행하는 것입니다.

접근 방식은 Promise.all()으로하고 거기에 내 서비스에 약속 전달 :

predict(data): Promise<any> { 
    let headers = new Headers({'Content-Type': 'application/json'}); 
    let dataString = JSON.stringify(data); 

    return this.http 
     .post(`${this.baseUrl}/predict`, dataString, headers) 
     .toPromise() 
     .then(
     (res: Response) => Promise.resolve(res.json()) 
    ) 
     .catch(
     (err) => Promise.reject(err) 
    ); 
    } // predict 

그리고 구성 요소 컨트롤러 :

promiseOne = this.apiservice.predict(titleToPredict); 
promiseTwo = this.apiservice.predict(secondTitleToPredict); 

Promise.all(promiseOne, promiseTwo) 
    .then(data => console.log(data)) 
    .catch(err => console.log(err)); 

을하지만 타이프 라이터 나에게 Supplied parameters do not match any signature of call target.

내가 아는 한을 반환 그 방법들은 약속들입니다. 그래서 ... 나는 무엇이 문제인지 알 수 없습니다.

+0

당신은 불필요한'Promise.resolve'와'.catch ((ERR) => Promise.reject (ERR))를 생략한다' – Bergi

답변

2

이어야한다 ...

Promise.all([promiseOne, promiseTwo]) 

...

이 방법은 하나 개의 인수 걸립니다 - 배열과 같은 an Iterable을.