Javascript 为什么请求承诺不将结果返回给邮递员和angular 2';s地图?
我们有一个角4,函数如下:Javascript 为什么请求承诺不将结果返回给邮递员和angular 2';s地图?,javascript,node.js,angular,service,promise,Javascript,Node.js,Angular,Service,Promise,我们有一个角4,函数如下: callPostAPI() { var headers = new Headers(); headers.append('Content-Type', 'application/json'); let options = {}; //passing no options return this.http.post('http://localhost:9000/v1/api/testapi', options, {
callPostAPI() {
var headers = new Headers();
headers.append('Content-Type', 'application/json');
let options = {}; //passing no options
return this.http.post('http://localhost:9000/v1/api/testapi', options, {
headers: headers
})
.map((response: Response) => {
return response.json();
})
.catch((error: Response) => {
return Observable.throw(error || 'server error');
});
}
app.post("/v1/api/testapi", (req, res) => {
rp({
method: 'GET',
url: 'http://maps.googleapis.com/maps/api/geocode/json',
qs: {
address: '66309'
}
})
.then(res => {
console.log(res); //proper results received
return res;
}).catch(err => {
return err;
});
}
功能如下:
callPostAPI() {
var headers = new Headers();
headers.append('Content-Type', 'application/json');
let options = {}; //passing no options
return this.http.post('http://localhost:9000/v1/api/testapi', options, {
headers: headers
})
.map((response: Response) => {
return response.json();
})
.catch((error: Response) => {
return Observable.throw(error || 'server error');
});
}
app.post("/v1/api/testapi", (req, res) => {
rp({
method: 'GET',
url: 'http://maps.googleapis.com/maps/api/geocode/json',
qs: {
address: '66309'
}
})
.then(res => {
console.log(res); //proper results received
return res;
}).catch(err => {
return err;
});
}
然而,当从Angular 4服务函数调用或通过Angular 4服务函数调用时,这不会返回任何响应
结果已收到,我们也可以在控制台上看到它们。所有这些都在没有标题的情况下工作
为什么请求承诺
不返回结果
使用订阅代替然后,我也有同样的问题,但尝试为我解决上述问题。您从未在服务器端处理请求承诺的结果。我假设您正在使用express,请尝试以下方法:
app.post("/v1/api/testapi", (req, res, next) => {
rp({
method: 'GET',
url: 'http://maps.googleapis.com/maps/api/geocode/json',
qs: {
address: '66309'
}
})
.then(result => {
console.log(res); //proper results received
return res.status(200).json(result);
}).catch(next);
}
尝试查看请求headers@MikeTung结果已经收到,我们也可以在控制台上看到它们。所有这些都没有标题。我应该在哪里使用订阅?在节点中<代码>类型错误:rp(…)。订阅不是一个函数,在angular 2中也是。问题在于rp
没有返回结果这似乎是由于CORS问题。默认情况下,浏览器不接受跨原点请求。你必须在标题中单独指定它们。你能告诉我更多关于这方面的信息吗?请看一下这些文档,它们非常好。默认情况下设置了状态200,因此你可以调用res.send(result)
。此外,此处不需要使用return
语句。