What could cause a promise to fail in Nativescript angular2?

孤者浪人 提交于 2019-12-11 06:14:22

问题


I am trying to Http GET from a database , where I do have access and can reproduce the GET result in Postman.

I have created a service in angular2 {N} where I execute this GET but I get an error of :

JS: EXCEPTION: Error: Uncaught (in promise): Response with status: 200  for URL: null

JS: STACKTRACE:
JS: Error: Uncaught (in promise): Response with status: 200  for URL: null
JS:     at resolvePromise (/data/data/org.nativescript.ndemo/files/app/tns_modules/zone.js/dist/zone-node.js:496:32)
JS:     at resolvePromise (/data/data/org.nativescript.ndemo/files/app/tns_modules/zone.js/dist/zone-node.js:481:18)
JS:     at /data/data/org.nativescript.ndemo/files/app/tns_modules/zone.js/dist/zone-node.js:529:18
JS:     at ZoneDelegate.invokeTask (/data/data/org.nativescript.ndemo/files/app/tns_modules/zone.js/dist/zone-node.js:314:38)
JS:     at Object.NgZoneImpl.inner.inner.fork.onInvokeTask (/data/data/org.nativescript.ndemo/files/app/tns_modules/@angular/core/src/zone/ng_zone_impl.js:37:41)
JS:     at ZoneDelegate.invokeTask (/data/data/org.nativescript.ndemo/files/app/tns_modules/zone.js/dist/zone-node.js:313:43)
JS:     at Zone.runTask (/data/data/org.nativescript.ndemo/files/app/tns_modules/zone.js/dist/zone-node.js:214:48)
JS:     at drainMicroTaskQueue (/data/data/org.nativescript.ndemo/files/app/tns_modules/zone.js/dist/zone-node.js:432:36)
JS: Unhandled Promise rejection: Response with status: 200  for URL: null ; Zone: angular ; Task: Promise.then ; Value: Response with status: 200  for URL: null
JS: Error: Uncaught

 (in promise): Response with status: 200  for URL: null

My service :

import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
export function createNonJsonResponse(http: Http, fullUrl: string): Promise<string>{
    return http.get(fullUrl)
            .toPromise()
            .then(response => response.text())
            // .catch(this.handleError);
}

I have logged both the URL given in and the Http and they are fine. I have no idea why is this happening and google couldn't help me find any solutions whatsoever.


回答1:


It seems, at least for me, @angular/core Http module is not working as intended. I switched to the nativescript's Http service (https://docs.nativescript.org/cookbook/http) and managed to accomplish what I needed without any problems.




回答2:


Are you injecting the service somewhere? Add @Injectable() above the export. What if you change how you write the service a little and see if you receive the same response?

@Injectable()
export class createNonJsonResponse {

  fullUrl: string = 'http://httpbin.org/get';

  constructor(private http: Http) {}

  getNonJsonResponse() {
     return this.http.get(this.fullUrl)
        .toPromise()
        .then(response => response.text())
        .catch(this.handleErrors);
    }
}

Then import it to your component

import {createNonJsonResponse} from "./yourservicename.service"

And finally call it

this.createNonJsonResponse.getNonJsonResponse().then(function (data) {
  alert("here");
  //console.log(data);
  //console.dump(data);
})

This worked for me I was able to hit my alert.



来源:https://stackoverflow.com/questions/38323438/what-could-cause-a-promise-to-fail-in-nativescript-angular2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!