gpt4 book ai didi

javascript - 需要澄清 Angular 中的映射和可观察语法

转载 作者:行者123 更新时间:2023-12-03 02:34:40 24 4
gpt4 key购买 nike

有一种语法让我感到困惑,我在 map 函数以及 typescript/Angular (Angular 5) 中的 observable 中看到了它。我有两种方法:

这个在组件中:

logout() {
this.authService.logout().subscribe(
result => {
this.router.navigate(['/login']);
}
);
}

这是相关服务中的:

logout(): Observable<any> {
return this.http.post('/api/auth/logout', { }).map(
response => {
this._token = null;
//more unrelated code...
return true
}
);
}

在这两种情况下让我感到困惑的部分是:

thing => {
//code
}

这是什么?上面的代码有效。但我发现事物既有“结果”又有“ react ”。 “事物”可以是任何东西,还是在某个地方定义的?

此外,我在 w3schools 中查找了 javascript 中的 map 函数(因为我从未使用过它),它在示例中显示第一个参数应该是一个应用于每个元素的函数它关联的数组但“thing => {}”不是一个函数,所以这非常令人困惑。

请注意,我提出问题的方式是为了找出潜在的误解,而不是专注于我的具体问题,但是解决我的具体问题可能有助于说明我的误解。

上面代码的问题是,虽然它可以工作,但当 api 端点返回 500 错误时,它不知道该怎么做。我正在尝试确定如何捕获错误,以便我可以在前端对此执行一些操作。

最佳答案

事物可以是任何你想命名的东西。结果、数据、响应等等,都不重要。您基本上要做的是为订阅发出的结果创建一个变量。订阅接受一个 function() ,并在该函数内传递要用于成功结果的变量名称。事实上,在这里,使用结果是没有意义的,因为从来没有用它做过任何事情。如果您不打算对响应执行任何操作,最好直接说:

logout() {
this.authService.logout().subscribe(() => {
this.router.navigate(['/login']);
});
}

要捕获错误,您只需在最后一个大写字母后面传递一个逗号,如下所示:

logout() {
this.authService.logout().subscribe(() => {
this.router.navigate(['/login']);
}, err => {
// Do something with error here
});
}

关于 map ,这里有一个例子

var array1 = [1, 4, 9, 16];
const map1 = array1.map(x => x * 2);

它基本上获取数组中的每个变量并执行该映射方法,这意味着它获取每个值并执行函数指定的任何操作,在本例中,将其乘以 2。将其视为一种转换。在该示例中,它基本上用于在将响应发送回订阅之前操纵响应。

关于javascript - 需要澄清 Angular 中的映射和可观察语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48586804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com