我在网上找到了这个代码,似乎无法理解其目的。为什么.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;
});
}
答案 0 :(得分:2)
运算符=>
是一个lambda表达式,它只是函数的简短版本。例如,代码a => a * 10
与
function (a) {
return a * 10;
}
地图功能来自RxJS
,您可以查看有关它的文档here。它基本上只是“更新”返回值的值。这两个变量是相同的,只是用上一个操作更新。
基本上,您的代码正在向网址POST
发出/login
请求,其中JSON
包含电子邮件和密码。然后它会将此请求的结果编辑为JSON
,并且结果是检查res.success
的值是否为真,如果是,则将auth_token
存储在{ {1}}。否则,您只是继续脚本并返回localStorage
。