如何在收到第一个事件时订阅和取消订阅 EventStream?

How to subscribe and unsubscribe from EventStream on the first event received?

我正在尝试弄清楚 Bacon.js API 中是否有允许订阅 EventStream 的函数,以及当第一个事件触发,句柄被取消订阅。我知道的方法如下:

let stream = new Bacon.Bus();

stream.onValue(val => {
    doSomething(val);
    return Bacon.noMore;
});

但是有没有像stream.onValueOnce这样的东西在执行后自动取消订阅处理程序?

我也知道 Bacon.once 创建了一个 returns 单个值然后结束流的 EventStream 但这不是我要找的。

更新

如Bless Yahu所说,take或者first方法都可以。更具体地说,您必须像这样从创建的事件流中调用它:

let stream = new Bacon.Bus();

stream.first().onValue(val => {
    doSomething(val);
});

这是一个显示它的 fiddle:

https://fiddle.jshell.net/3kjtwcwy/

stream.take(1) 怎么样? https://baconjs.github.io/api.html#observable-take

或stream.first()? https://baconjs.github.io/api.html#observable-first