【问题标题】:I can see node-express server response but i cannot use it in my angular2 promise service我可以看到 node-express 服务器响应,但我不能在我的 angular2 promise 服务中使用它
【发布时间】:2016-12-21 03:01:13
【问题描述】:

我的对象从服务器响应返回,我可以在谷歌浏览器开发工具的网络标签响应中看到。

module.exports = (req, res) => {   
var obj = {
    name: "Thabo",
    age: 23
};
res.json({obj})
};

我有 angular2-typescript 服务,它使用承诺从服务器获取可观察的响应

export class MyService {
  constructor(private http: Http) { }
  getMessage(): Promise<any> {
return this.http.get('/map-moving-agents')
           .toPromise()
           .then((res)=> {
             console.log(res.json().data);
             res.json().data;
            })
           .catch(this.handleError);
}

private handleError(error: any): Promise<any> {
console.error('An error occurred', error); 
return Promise.reject(error.message || error);
}
}

我什至在 promise 的“then”上记录了响应,它记录了 undefined。

这是使用服务的组件

export class MapMovingAgents implements OnInit{

msg: {};
constructor(private myService: MyService){}

getMessage(): void {
    this.myService.getMessage().then((res) => { this.msg = res;})
     console.log(this.msg);
}

ngOnInit(): void {
    this.getMessage();
}
}

【问题讨论】:

  • 可以在响应中添加网络标签的屏幕截图吗?
  • 我刚刚添加了截图
  • 那不是网络标签
  • 我对他们俩都感到抱歉

标签: node.js angular express typescript es6-promise


【解决方案1】:
getMessage(): void {
    this.myService.getMessage().then((res) => { this.msg = res;})
     console.log(this.msg);
}

将记录undefined,因为getMessage() 函数是async 函数。

改成

getMessage(): void {
    this.myService.getMessage().then((res) => { 
        this.msg = res;
        console.log(this.msg);
    });         
}

您的回复没有data 字段,因此res.json().data; 将是undefined 仅返回res.json()res.json().obj

【讨论】:

  • @Teebo 如何将我的答案与@SimonH's 结合起来?将return语句添加到res.json().dataconsole.log就像我的一样
  • 这正是我所做的
  • 哈哈哈!我真的很感激它兄弟,耶!
  • 哦,是的,模糊的勾号,我就是这样做的,:D 但它不是绿色的
  • @Teebo 你点击了它,它没有变成绿色? :O
【解决方案2】:

您需要返回最终值以供其余代码使用

  return this.http.get('/map-moving-agents')
       .toPromise()
       .then((res)=> {
         console.log(res.json().data);
         return res.json().data;    <--------------
        })
       .catch(this.handleError);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多