我想知道~(event.status / 100) > 3
在以下代码中~
做了什么?
@Injectable()
export class AuthInterceptor implements HttpInterceptor {
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.info('req.headers =', req.headers, ';');
return next.handle(req)
.map((event: HttpEvent<any>) => {
if (event instanceof HttpResponse && ~(event.status / 100) > 3) {
console.info('HttpResponse::event =', event, ';');
} else console.info('event =', event, ';');
return event;
})
.catch((err: any, caught) => {
if (err instanceof HttpErrorResponse) {
if (err.status === 403) {
console.info('err.error =', err.error, ';');
}
return Observable.throw(err);
}
});
}
}
?{{1}}
答案 0 :(得分:3)
~
是按位NOT运算符。
MDN
~(event.status / 100) > 3
与event.status <= -500
相同
请参阅下面的代码段。
a = 200;
console.log( ~(a / 100) , ~(a / 100) >3 );
a = 300;
console.log( ~(a / 100), ~(a / 100) >3 );
a = 400;
console.log( ~(a / 100), ~(a / 100) >3 );
a = -200;
console.log( ~(a / 100), ~(a / 100) >3 );
a = -300;
console.log( ~(a / 100), ~(a / 100) >3 );
a = -400;
console.log( ~(a / 100), ~(a / 100) >3 );
a = -500;
console.log( ~(a / 100), ~(a / 100) >3 );
&#13;
答案 1 :(得分:0)
代码确定HTTP响应是信息响应还是成功响应。由于信息和成功响应的范围从响应代码100到226.您可以在https://developer.mozilla.org/en-US/docs/Web/HTTP/Status查看HTTP响应代码列表。 HTTP响应代码只是告诉您与URL连接的当前状态。例如,如果代码是226,则表示Web服务器处于&#34; IM Used&#34;状态。
如果是您展示的代码,则会将信息和成功代码记录到控制台,而其他代码则通过并输入需要该信息的代码。
我希望这有助于您了解代码的功能。