Изменение всех функций, которые возвращают Promise к наблюдаемым - PullRequest
0 голосов
/ 21 ноября 2019

У меня есть API, где почти каждая функция возвращает Promise. Я хочу использовать этот API реактивным способом. Для одного случая это выглядит так:

source.pipe(
    mergeMap(action => {
        return defer<[]>(() => API.callThatReturnsAPromise()).pipe(
            map(result => {
                return doFancyStuff(result);
            })
        );
    })
)

Предположим, есть много функций, которые возвращают обещание (некоторые с аргументами, другие нет).

Есть лиэлегантный способ сделать эти обещания наблюдаемым без ручного переноса с отсрочкой и передачей возможных аргументов?

Заранее спасибо

1 Ответ

0 голосов
/ 21 ноября 2019

Ваш вопрос почти содержит ответ.

const toObservable=(promiseFn,mapFn)=>
       defer<[]>(() => promiseFn()).pipe(
            map(result => {
                return mapFn(result);
            })
        );


// usage
   api.get=()=>Promise.resolve('ok')
   mapFn=(value)=>...your map logic
   toObservable(api.get,mapFn).subscribe()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...