Как отправить ошибку из .map() в xstream Stream?

Допустим, я хотел бы, чтобы поток выдавал ошибку в определенных случаях:

import xs from 'xstream'
//...
function transformBlah(blah) {
    if (blah.status >= 200 && blah.status < 300) {
        return blah.body
    } else {
        return new Error('I would like to send an error onto the Stream here')
    }
}
const blahTransformed$ = xs.create(new BlahProducer())
                           .map(transformBlah)

person ᆼᆺᆼ    schedule 15.10.2017    source источник
comment
github.com/staltz/xstream#throw   -  person bloodyKnuckles    schedule 16.10.2017
comment
@bloodyKnuckles Спасибо, но как мне это сделать, если текущий поток включен .mapped? Или просто работает возврат нового потока из transformBlah?   -  person ᆼᆺᆼ    schedule 16.10.2017


Ответы (1)


Я обнаружил, что при возникновении исключения это достигается как в rxjs, так и в xstream:

import xs from 'xstream'
//...
const blahTransformed$ = xs.create(new BlahProducer())
                           .map(blah => {
                               if (blah.status >= 200 && blah.status < 300) {
                                   return blah.body
                               } else {
                                   throw blah.status 
                               }
                           })

Исключение перехватывается библиотекой Observable, и в потоке возникает ошибка.

person ᆼᆺᆼ    schedule 17.10.2017