gpt4 book ai didi

Angular2访问数组Observable中的第一个元素

转载 作者:行者123 更新时间:2023-12-02 00:49:40 26 4
gpt4 key购买 nike

编辑:我终于在 https://plnkr.co/edit/A2WipJwW9kEhhlh90xMj 上解决了我的问题.如果您点击选择市场然后按回车键,它将进入 market-search.component.ts 文件中的 marketSelectorDropDown 方法。问题出在 map 下方的几行中,订阅永远不会执行,直到再次单击选择市场下拉菜单。我不懂为什么。任何帮助是极大的赞赏!

this.markets
.map(markets => {
debugger
if(markets && markets.length > 0) return markets[0];
})
.subscribe((market: Market) => {
debugger
this.pick(market.name)
});

编辑:在评论中标记为答案的就是答案。就是用一个BehaviorSubject。这允许迟到的订阅者获得发送的最后一个事件。

最佳答案

根据 RxJS5 文档

第一运营商

If called with no arguments, first emits the first value of the source Observable, then completes. If called with a predicate function, first emits the first value of the source that matches the specified condition. It may also take a resultSelector function to produce the output value from the input value, and a defaultValue to emit in case the source completes before it is able to emit a valid value. Throws an error if defaultValue was not provided and a matching element is not found.

如果你从事件中处理 Observable,它很有用

例如,仅发出发生在 DOM 上的第一次点击(如 jQuery 中的 .one)

var clicks = Rx.Observable.fromEvent(document, 'click');
var result = clicks.first();
result.subscribe(x => console.log(x));

或者您可以查看此答案中的其他用例 Angular 2 runOutsideAngular still change the UI

所以它并不完全是你想要的,但你可以像这样使用它:

.first(null, arr => arr[0]).subscribe...

它应该返回数组 所需的第一个元素 Plunker Example (第一)

但我会利用 map 运算符来做同样的事情:

.map(arr => arr[0]).subscribe...

Plunker Example ( map )

关于Angular2访问数组Observable中的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40919078/

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