【问题标题】:What could cause a promise to fail in Nativescript angular2?什么可能导致 Nativescript angular2 中的承诺失败?
【发布时间】:2016-07-12 08:18:17
【问题描述】:

我正在尝试从数据库中 Http GET,我可以在其中访问并且可以在 Postman 中重现 GET 结果。

我在 angular2 {N} 中创建了一个服务,我在其中执行了这个 GET,但我得到一个错误:

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

我的服务:

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);
}

我已经记录了给出的 URL 和 Http,它们都很好。 我不知道为什么会发生这种情况,谷歌也无法帮助我找到任何解决方案。

【问题讨论】:

  • 你解决了吗?它发生在我身上,我不知道还能做什么。

标签: http promise angular2-nativescript


【解决方案1】:

至少对我来说,@angular/core Http 模块似乎没有按预期工作。我切换到 nativescript 的 Http 服务 (https://docs.nativescript.org/cookbook/http) 并成功地完成了我需要的工作。

【讨论】:

    【解决方案2】:

    您是否在某处注入服务?在导出上方添加@Injectable()。如果您稍微改变一下编写服务的方式并查看是否收到相同的响应会怎样?

    @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);
        }
    }
    

    然后将其导入到您的组件中

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

    最后调用它

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

    这对我有用,我能够触发警报。

    【讨论】:

      猜你喜欢
      • 2018-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      相关资源
      最近更新 更多