bacon.js:事件流中的错误事件传播

时间:2014-09-10 06:09:44

标签: javascript reactive-programming frp bacon.js

我想在以下场景中使用bacon.js:
1.读取目录中的文件
2.每个文件由一个url组成,向网址发出http请求 3.将每个响应写入另一个目录中的相应文件

从文档中我了解到,即使所有值都被过滤掉,一个流中的错误也会传递给后续的错误。如果是这种情况,那么我只需要在最后一个流上指定onError处理程序,因为它也会从先前的流中接收错误。这是对的吗?

此外,似乎默认情况下,错误事件不会终止流。因此,即使一个文件操作或http请求失败,其他文件也不受影响。这是对的吗?

1 个答案:

答案 0 :(得分:1)

是的,你是对的。基本上,如果您将onValue处理程序附加到流,那么您也想要附加onError处理程序的流。

这样的事情:

var files = ["a.txt", "b.txt", "c.txt"]
var filenames = Bacon.fromArray(files)
var urls = filenames.flatMap(readFile)
var responses = url.flatMap(doHttpRequest)

responses.onValue(writeToFile)
responses.onError(handleError)

// readFile & doHttpRequest are async, so they return a stream
// that's why we need the flatMap above