Angular2 Jsonp承诺电话

Angular2 Jsonp承诺电话,angular,es6-promise,Angular,Es6 Promise,目前我正在调查Angular2-alpha45 由于CORS问题,我必须进行JSONP调用。问题是,这个电话需要一些时间,我不知道如何把答案包装成承诺 我可以将一个常规的http.get包装成一个承诺,但由于CORS,这不是一个满足我需要的解决方案 工作http.get示例: import {Jsonp, Http} from 'angular2/http'; // works this.getPromise().then(result => { console.dir(resu

目前我正在调查Angular2-alpha45

由于CORS问题,我必须进行JSONP调用。问题是,这个电话需要一些时间,我不知道如何把答案包装成承诺

我可以将一个常规的http.get包装成一个承诺,但由于CORS,这不是一个满足我需要的解决方案

工作http.get示例:

import {Jsonp, Http} from 'angular2/http';

// works
this.getPromise().then(result => {
    console.dir(result)
});

getPromise(): Promise<Array> {
    return this.http
    .get('test.json')
    .map((res) => {
        return res.json()
    })
    .toPromise();
}
从'angular2/Http'导入{Jsonp,Http};
//工作
this.getPromise().then(结果=>{
console.dir(结果)
});
getPromise():Promise{
返回此文件。http
.get('test.json')
.map((res)=>{
return res.json()
})
.toPromise();
}
不工作的Jsonp:

import {Jsonp, Http} from 'angular2/http';

// Doesn't work
this.getPromiseJsonp().then(result => {
    console.dir(result)
});

getPromiseJsonp(): Promise<Array> {
    // this.generateJsonpUrlDataGet2 generates the URL for call, URL is correct
    // response is sent but without a promise
    var url = this.generateJsonpUrlDataGet2('SingleUser', "test", '');
    return this.jsonp.request(url).subscribe(res => {
        // console.dir() get called!
        console.dir(res._body);
        return res._body;
    }).toPromise();
}
从'angular2/Http'导入{Jsonp,Http};
//不起作用
this.getPromiseJsonp().then(结果=>{
console.dir(结果)
});
getPromiseJsonp():承诺{
//this.generateJsonpUrlDataGet2生成调用的URL,URL是正确的
//已发送响应,但没有承诺
var url=this.generateJsonpUrlDataGet2('SingleUser','test','';
返回此.jsonp.request(url).subscribe(res=>{
//console.dir()被调用!
主控台主任(会议室);;
返回联合国机构;
}).toPromise();
}

有人能告诉我如何将Jsonp调用包装成承诺吗?

下面是如何使用承诺进行Jsonp调用。我刚刚使用了错误的函数,看起来必须映射承诺,因此必须调用map()-函数:

return this.jsonp.request(url).map(res => {
    return res.json();
}).toPromise();

你为什么需要承诺?无论请求花费多长时间,可观察的也可以工作。无论如何,要回答您的问题,您应该
this.jsonp.request(url).toPromise()。然后(()=>…)
,尽管这与您使用
订阅时所做的操作完全相同。