gpt4 book ai didi

angular - .subscribe(x=> ...) 和 .subscribe(next(...)) 的区别?

转载 作者:行者123 更新时间:2023-12-04 11:35:00 26 4
gpt4 key购买 nike

我正在尝试测试主题 symbol$ 的输出存在于我的组件上。
具体来说,当组件属性 symbol 时,主题符号 $ 应该发出(这是正确的词吗?)已经改变。
但是,我找不到测试输出到 symbol$ 的方法。直到我在网上看到一大段代码使用 .subscribe(next() { ... }) 而不是 .subscribe((x) => {...});句法。
2个电话有什么区别?
为什么其中只有 1 个有效?

it('should fetch data', () => {
const actuals: string[] = [];

// commented version doesn't work
// component.symbol$.subscribe((symbol) => { actuals.push(symbol); } ;

component.symbol$.subscribe({
next(symbol) {
actuals.push(symbol);
},
});

expect(actuals).toEqual(['']);
component.symbol = 'IBM';
component.ngOnChanges();

expect(actuals).toEqual(['', 'IBM']);
});

最佳答案

将箭头函数与普通函数传递到订阅中是有区别的,特别是围绕这一点。
带箭头函数的观察者:
enter image description here
带有函数声明的观察者:
enter image description here
但要注意 this :

const sub = source$.subscribe({
next(apple) { this.apple = apple }, // Does NOT reference the
// class-level variable
error(err) { console.log(`Error occurred: ${err}`)},
complete() { console.log(`No more apples, go home`)}
});
this作用域是一个函数, thisnext(apple)函数不会引用任何类级变量,但会假设您正在定义一个局部于 next(apple) 的新变量。功能。
箭头函数不是这种情况。 this在箭头函数内的作用域是类级变量。

关于angular - .subscribe(x=> ...) 和 .subscribe(next(...)) 的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68355418/

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