我想在以下场景中使用bacon.js:
1.读取目录中的文件
2.每个文件由一个url组成,向网址发出http请求
3.将每个响应写入另一个目录中的相应文件
从文档中我了解到,即使所有值都被过滤掉,一个流中的错误也会传递给后续的错误。如果是这种情况,那么我只需要在最后一个流上指定onError
处理程序,因为它也会从先前的流中接收错误。这是对的吗?
此外,似乎默认情况下,错误事件不会终止流。因此,即使一个文件操作或http请求失败,其他文件也不受影响。这是对的吗?
答案 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