2017-01-04 2 views
0

код здесь:Каким образом будущее автоматически преобразуется в наблюдаемое?

https://github.com/ReactiveX/RxPY/blob/master/examples/autocomplete/autocomplete_asyncio.py#L63

searcher = query.flat_map_latest(search_wikipedia) 

def search_wikipedia(term): 
    """Search Wikipedia for a given term""" 
    url = 'http://en.wikipedia.org/w/api.php' 

    params = { 
     "action": 'opensearch', 
     "search": term, 
     "format": 'json' 
    } 
    # Must set a user agent for non-browser requests to Wikipedia 
    user_agent = "RxPY/1.0 (https://github.com/dbrattli/RxPY; [email protected]) Tornado/4.0.1" 

    url = url_concat(url, params) 

    http_client = AsyncHTTPClient() 
    return http_client.fetch(url, method='GET', user_agent=user_agent) 

Функция search_wikipedia возвращает будущее, в то время как Observable.flat_map_latest() принимает функцию, которая должна вернуть наблюдаемым.

Мой вопрос: Как будущее возвращается функцией search_wikipedia() автоматически преобразуется в наблюдаемый? Существует Observable.from_future() может преобразовать будущее в наблюдаемый. Но его следует называть явно.

ответ