2016-12-02 2 views
-2

Я нашел этот код онлайн и, похоже, не понимаю его цели. Почему метод .map вызывается дважды, являются ли переменными res одинаковыми в обоих методах?Что делает этот код? (.map и res)

login(email, password) { 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 

    return this.http 
     .post(
     '/login', 
     JSON.stringify({ email, password }), 
     { headers } 
    ) 
     .map(res => res.json()) 
     .map((res) => { 
     if (res.success) { 
      localStorage.setItem('auth_token', res.auth_token); 
      this.loggedIn = true; 
     } 

     return res.success; 
     }); 
    } 
+0

Я думаю, что «=>» для «лямбда-выражения» в java есть «->», например, с помощью этого вы можете сделать функцию для каждого элемента карты. – RudiDudi

+0

duplicate http://stackoverflow.com/questions/34274520/ – enkryptor

ответ

2

Оператор => является лямбда-выражение, это просто короткая версия функции. Например, код a => a * 10 точно такие же вещи, как

function (a) { 
    return a * 10; 
} 

Функция карты пришедшая от RxJS, вы можете проверить документацию об этом here. Это, в основном, просто «обновляет» значение возвращаемого значения. Эти две переменные одинаковы, только что обновленные с предыдущей операцией.

В принципе, ваш код делает запрос POST по адресу /login с адресом JSON, содержащим электронное письмо и пароль. Затем он отредактирует результат этого запроса на JSON, и в результате проверяет, действительно ли значение res.success истинно, если да, вы сохраняете auth_token в localStorage. В противном случае вы просто продолжаете сценарий и возвращаете значение res.success.

+0

Я так благодарен, поэтому. .map (res => res.json()) означает, что ответ преобразуется в json-формат и затем сохраняется в 'res ». Если «res» в res.json() означает «Ответ», его не нужно определять перед этим кодом? Я не видел никаких «res» перед этим кодом. так что я не был таким ясным. У этого json отформатированного «res» есть внутренний ключ auth_token? Еще раз спасибо. –

+0

Да, это именно так. – Sakuto

+0

спасибо, так, правильно ли это в res => res.json(), первое res имеет форматированное значение json, а второе res - «Response»? –