2016-10-31 6 views
1
next() { 
    if (this.form.valid) { 
     this.fooService.login(this.form.get('email').value, this.form.get('password').value) 
     .subscribe(
     principal => { 
      this.barService.put('sessionId', principal.token); 
      this.doStuffWithToken(user.token); 
     }, 
     error => console.log(error) 
    ); 
     this.goToNextStep(); 
    } 
    return false; //What? 
    } 

ここでreturn false行のポイントは何ですか?これは私が作業しているコード全体で行われており、理由を理解できません。Function-PurposeのIf文の後に「Falseを返す」ステートメント

+0

「next」とはどのように呼ばれていますか?呼び出し元はこの値を使用しますか? – deceze

+0

関数を呼び出す関数と、関数が返り値として期待する関数と、戻り値によって関数が何をするかによって異なります。 –

+0

そのコードはどこから来ますか?あなたのメソッドの戻り値の型は指定されていないので、真偽値を返すか、voidを返して "返り値false"の部分だけが返されます。 – Supamiu

答えて

5

return falseを入力しないと、代わりにundefinedが返されます。これが問題であるかどうかは、関数を呼び出すコードによって異なります。

+1

いつも同じことを返す場合、これに何の利益があろうか?それが 'false'か' undefined'かどうか? – Adjit

+1

@Adjitは、その値がどのように消費されているかによって異なります。 'next()'を呼び出すものはブール値を期待するかもしれないが、ブール値が何であるかは本当に問題ではないかもしれない。 – vlaz

+0

@vlazそれはかなり奇妙なことです... 'undefined'と' false'の間に明白な違いを作り、そして何をしているのですか?例外を投げる? "戻り値はブール値ではありません"?ちょうど無意味であると思われる。 – deceze

0

このようにして、フォームが有効であることを確認できます。たとえば:

if (next() === false) { 
    alert('Form is invalid'); 
} 
+0

これは*常に*真実であるので、実際のポイントはありません... – deceze

1

私はそのつもりは永遠に答えを待って、next()return falseせずに、ミドルウェア機能だと思います。フォームが有効な場合はgoToNextStep()と呼ばれます。

+0

あなたは何を意味するかを詳しく説明できますか? – VSO

+0

この関数は、データをgoToNextStep()に渡す前に、まずユーザー入力をチェックします。次の()はファイアウォールのようなもので、データが有効な場合のみ渡します。そうでない場合は何かを待っています。 falseを返すと、何らかのエラーメッセージが表示されるはずです。 – Kamal

+0

@ Kamalしかし、 'goToNextStep()'が完了した後でさえ、あなたが誤った戻り値で何らかのエラーメッセージを表示したとすると、常にそのエラーメッセージを表示してしまいます。 'goToNextStep()'が "error"メッセージを変更し、falseを返した場合、 'goToNextStep()'によって変更されたかどうかに関わらず、 "エラー"メッセージを表示するようにページに指示します。他の誰かがこれを指摘したように、すべての推測です。 – Adjit

関連する問題