SAP Spartacus CurrentProductService返回的null对象
时间:2022-07-25
本文章向大家介绍SAP Spartacus CurrentProductService返回的null对象,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用如下的代码监控getProduct可能返回的null值:
import { Component, OnInit } from '@angular/core';
import { ActiveCartService, Product } from '@spartacus/core';
import { CurrentProductService } from '@spartacus/storefront';
import { Observable, OperatorFunction } from 'rxjs';
import { filter, map } from 'rxjs/operators';
@Component({
selector: 'app-mycom',
templateUrl: './mycom.component.html',
styleUrls: ['./mycom.component.scss']
})
export class MycomComponent implements OnInit {
jerryfilter: OperatorFunction<Product, Product> =
filter(this.jerrytest2);
product$: Observable<Product> = this.currentProductService.getProduct().pipe(this.jerryfilter);
productName$ = this.product$.pipe(map(product => product.name));
jerrytest2(product: Product): boolean {
const result = !!product;
if (result === false) {
console.log('false!');
}
return result;
}
constructor(private currentProductService: CurrentProductService, private cartService: ActiveCartService
) {
}
ngOnInit(): void {
this.product$.subscribe(product => console.log(product));
}
}
TypeScript语句jerryfilter: OperatorFunction<Product, Product> = filter(this.jerrytest2);
对应的JavaScript函数:
jerryfilter的JavaScript实现是一个名字叫filter的function,接收一个predicate function作为输入参数,返回一个新的函数,总金额和新的函数会基于传进来的predicate新建一个filterOperator实例:
export function filter(predicate, thisArg) {
return function filterOperatorFunction(source) {
return source.lift(new FilterOperator(predicate, thisArg));
};
product$: Observable = this.currentProductService.getProduct().pipe(this.jerryfilter);
注意,product$是一个Observable对象,不是实际的product值:
operator指向了我传入的filter.
product$也是Observable,因此可以继续调用pipe.
返回为false的情况:
filter的实现,如果箭头函数返回false,就不往下继续执行了:
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法