2016-02-27 3 views
0

внутримышечно довольно новое Rxjs, но теперь у меня есть проблема: У меня есть этот код:Наблюдаемые удваивается

const requestStream = Observable.of({ 
    url: siteLocation + 'login', 
    body: { 
     personnelNumber : personnelNumber, 
     password : password 
    } 
}); 

requestStream.subscribe(response => { 
    console.log("Hello") 
}); 

const responseStream : Observable<Response> = requestStream 
.flatMap(request => { 
    console.log("Hello2"); 

    return this.http.post(request.url, JSON.stringify(request.body), { 
     headers: this.getHeaders() 
    }); 
}); 

const jsonStream = responseStream.map(response => response.json()); 

jsonStream.subscribe(json => { 
    console.log("Hello3"); 
    this.authToken = json.authToken; 
}); 

Но я получаю этот выход:

Hello 
Hello2 
Hello2 
Hello3 

Почему flatMap удваивает мой запрос Stream и даже если это отступы, почему результирующий поток json нормальный снова?

Проблема в том, что я вхожу в мой API с этим фрагментом, и я дважды вхожу в систему, поэтому во второй раз, когда я вхожу в систему, мой первый authToken недействителен, и я получаю новый. Но поскольку я сохраняю только первый, мой сохраненный токен никогда не будет действительным.

Я проверил запросы и ответы в Chrome, все они правильные.

ответ

0

Я нашел проблему.

Проблема заключалась в том, что я подписался на поток json. Когда я использовал карту (потому что я хотел повторно использовать поток), все сработало. Я думаю, что это ошибка, я сообщу об этом.

Смежные вопросы