有承诺的 Angular2 Jsonp 调用
Angular2 Jsonp call with promise
目前我正在研究 Angular2-alpha45。
由于 CORS 问题,我必须进行 JSONP 调用。问题是,通话需要一些时间,而且我不知道如何将答案包装成承诺。
我可以将常规 http.get 封装到一个 promise 中,但由于 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();
}
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();
}
谁能告诉我如何将 Jsonp 调用包装到 promise 中?
以下是如何使用 Promise 进行 JSONP 调用。我只是用错了函数,看起来必须映射 Promises,所以必须调用 map()-函数:
return this.jsonp.request(url).map(res => {
return res.json();
}).toPromise();
目前我正在研究 Angular2-alpha45。
由于 CORS 问题,我必须进行 JSONP 调用。问题是,通话需要一些时间,而且我不知道如何将答案包装成承诺。
我可以将常规 http.get 封装到一个 promise 中,但由于 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();
}
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();
}
谁能告诉我如何将 Jsonp 调用包装到 promise 中?
以下是如何使用 Promise 进行 JSONP 调用。我只是用错了函数,看起来必须映射 Promises,所以必须调用 map()-函数:
return this.jsonp.request(url).map(res => {
return res.json();
}).toPromise();