Javascript 为什么请求承诺不将结果返回给邮递员和angular 2';s地图?

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, {

我们有一个角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, {
          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
语句。