与Promise.all()的Angular2 $ http承诺

时间:2016-11-22 23:21:45

标签: javascript angular

我正试图在angular2中实现一个简单的promise模式。这个想法是在两个承诺得到解决时执行一段代码。

方法是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));

但TypeScript返回给我Supplied parameters do not match any signature of call target.

据我所知,方法是承诺,所以...我无法确定问题是什么。

1 个答案:

答案 0 :(得分:2)

应该......

Promise.all([promiseOne, promiseTwo])

...因为此方法采用一个参数 - an Iterable(例如数组)。