CoffeeMachine类构造函数map返回箭头函数中coffee参数来源问询
这个coffee参数来自两个场景:
- 责任链第一个处理函数的
coffee参数
是processCoffee方法主动传入的this.coffeeCup对象,对应代码:
processCoffee() { this.handlers[0](this.coffeeCup); }
你实例化CoffeeMachine时传入的配料列表,或者调用setNewIngredients更新后的配料,都会存在这个coffeeCup对象里,作为初始值传递给责任链的第一个处理函数。
- 责任链后续所有处理函数的
coffee参数
是前一个处理函数调用next时传入的同一个对象:
构造函数中map遍历的时候,给每个原始处理逻辑都包了一层箭头函数,调用原始处理逻辑时会把下一个包装后的箭头函数作为第二个参数next传进去。每个原始处理逻辑完成操作后都会调用next(coffee),这里传入的coffee就会作为下一个箭头函数的coffee参数输入。
整个逻辑是典型的责任链模式,同一个咖啡杯对象在整条处理链路里透传,每个步骤给它追加对应的属性标记,最后到resultHandler输出最终结果。
内容的提问来源于stack exchange,提问作者tester
相关产品推荐
相关产品推荐

