2016-11-22 2 views
1

Я пытаюсь реализовать простой шаблон обещания в угловом2. Идея состоит в том, чтобы выполнить блок кода, когда оба обещания будут решены.

Подход с 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 (например, массив).

Смежные вопросы