Как мне добраться от Observable BleHandler.BlePeripheral? - PullRequest
1 голос
/ 04 апреля 2020

У меня есть variable, который возвращает мне тип Observable<BleHandler.BlePeripheral> после использования flatMap на array.

let scannedPeripheral: Observable<BleHandler.BlePeripheral> = instance.bleScan()
            .flatMap{ Observable.from($0)}

Но теперь мне нужно использовать это variable в другом function, что занимает BleHandler.BlePeripheral:

instance.bleEstablishConnection(scannedPeripheral: scannedPeripheral)

Очевидно, что это не работает. Есть ли способ получить мои Observable<BleHandler.BlePeripheral> просто BleHandler.BlePeripheral

1 Ответ

1 голос
/ 04 апреля 2020

Это зависит от того, возвращает ли функция значение и какой тип значения она возвращает ...

Если функция недействительна и вы просто вызываете ее для побочных эффектов, то:

let disposable = scannedPeripheral
    .subscribe(onNext: { instance.bleEstablishConnection(scannedPeripheral: $0) })

Если ваша функция имеет побочные эффекты и возвращает Observable, то:

let returnValue = scannedPeripheral
    .flatMap { instance.bleEstablishConnection(scannedPeripheral: $0) }

Если у функции нет побочных эффектов, и вы просто вызываете ее, чтобы преобразовать свое значение в другое значение, тогда:

let returnValue = scannedPeripheral
    .map { instance.bleEstablishConnection(scannedPeripheral: $0) }

Последнее вряд ли основано на названии функции, но я приведу его здесь для полноты.

...