这段代码在做什么? (.map和res)

时间:2016-12-02 13:39:48

标签: angular typescript rxjs

我在网上找到了这个代码,似乎无法理解其目的。为什么.map方法被调用两次,res变量在两种方法中都相同?

login(email, password) {
    let headers = new Headers();
    headers.append('Content-Type', 'application/json');

    return this.http
      .post(
        '/login', 
        JSON.stringify({ email, password }), 
        { headers }
      )
      .map(res => res.json())
      .map((res) => {
        if (res.success) {
          localStorage.setItem('auth_token', res.auth_token);
          this.loggedIn = true;
        }

        return res.success;
      });
  }

1 个答案:

答案 0 :(得分:2)

运算符=>是一个lambda表达式,它只是函数的简短版本。例如,代码a => a * 10

完全相同
function (a) {
    return a * 10;
}

地图功能来自RxJS,您可以查看有关它的文档here。它基本上只是“更新”返回值的值。这两个变量是相同的,只是用上一个操作更新。

基本上,您的代码正在向网址POST发出/login请求,其中JSON包含电子邮件和密码。然后它会将此请求的结果编辑为JSON,并且结果是检查res.success的值是否为真,如果是,则将auth_token存储在{ {1}}。否则,您只是继续脚本并返回localStorage

的值