Ошибка: «Uncaught (в обещании): [объект объекта] - PullRequest
0 голосов
/ 29 марта 2019

Ошибка возникает, когда я пытаюсь опубликовать метод GET для остальных API, но в почтальоне он работает отлично.

 public cartview() {
    let localaccesstoken = localStorage.getItem('token');
    let apiUrl = this.urlService.apiUrl+'cart?access_token='+localaccesstoken;
    console.log(apiUrl);

    return new Promise((resolve, reject) => {
        console.log("test : "+apiUrl);
        this.http.get(apiUrl)
          .subscribe(res => {
            console.log("w3cert Url : "+JSON.stringify(res));            
            console.log(resolve(res));
          }, (err) => {
            console.log('w3cert : '+reject(err));
        });
    });

В журнале консоли он показывает API.Я скопировал этот API и разместил в почтальоне, и он работает, но в приложении он показывает эту ошибку:

Ошибка: «Uncaught (в обещании): [объект объекта]»

Ответы [ 2 ]

1 голос
/ 29 марта 2019

Я думаю, что проблема в том, откуда вы вызываете свою cartview() функцию, с которой вы должны вызывать ее, И ловить оба:

cartview().then(res => {
    console.log(res)
}).catch(err => {
    console.error(err)
})
1 голос
/ 29 марта 2019

Измените ваш метод на что-то вроде этого:

 public cartview() {
   let localaccesstoken = localStorage.getItem('token');
   let apiUrl = this.urlService.apiUrl+'cart?access_token='+localaccesstoken;
   console.log(apiUrl);
   return this.http.get(apiUrl).pipe(
     tap(res => console.log(res))
   ).toPromise() <--- rxjs wraps the observable in a Promise for you
 });

Я полагаю, что выше должно быть что-то вроде сервисного метода.Тогда в вашем компоненте (или в том месте, где вы хотите поймать обещание) вы можете вызвать метод .then ():

...cartview().then(res => console.log(res)).catch(err => console.error(err))

Из приведенного выше кода я вижу, что вы плохо работаете с наблюдаемыми/ Promises, а также вы сами регистрируете методы разрешения / отклонения, а не их результаты.

...