2017-06-18 9 views
0

検証エラーがある場合にmain関数を返す/エスケープする必要があるvalidate()を呼び出す複数のタスク関数があります。 typescript/javascriptでこれを行うことは可能ですか?私は、各タスクは、私は検証関数を呼び出す複数のタスクで私のコードをスケールアップしたい場合に実行された後かのチェックを作成しないようにしたいエスケープ/別の関数からの関数を返す

cont validate =() => { 
    //validation etc... 
    //if validation error 
    // return & request mainFunction() to also return 
} 

const taskOne =() => { 
    validate() //some validation error happened when this got called.. 
} 

const taskTwo =() => { 
    validate() 
} 

const mainFunction =() => { 
    taskOne(); 
    taskTwo(); //will not run because taskOne requested return 
} 

mainFunction(); 

(Iは、ノード環境で働いています)。どのように私はこの仕事を達成することができますか?

+1

検証に失敗した場合はエラーを投げてキャッチしますか? – Saravana

+0

私はそれが進行中のウォッチャーであり、検証が拒否され、不正なファイルが作成されるため、アプリケーションを停止したくないです。むしろ、ユーザーがファイル上でsaveイベントをトリガーした後で、mainFunctionを再起動することでそれを継続したいと考えています。 – Jonathan002

+0

より多くの文脈を提供する必要があります。返された値で何をやっていますか?好ましくは、いくつかの作業コード。それが立てば、これは良い質問のようには見えません。 – Rick

答えて

1

ブール値を返し、検証を連鎖させることができます。

const validate = (prop) => { 
    // validation etc... 
    // if validation error 
    //  return false & request mainFunction() to also return 
    return true; 
} 

const taskOne =() => validate(one); 
const taskTwo =() => validate(two); 

const mainFunction =() => taskOne() && taskTwo() && taskThree() /* && ... */; 

mainFunction(); 
+0

この回答をありがとう。私は自分のコードで使用することはできませんが、私は変数を割り当てて、特定のタスクでそれらを再利用しています。例えばlet taskOne = taskOne(); let taskTwo = taskTwo(taskOne); – Jonathan002

+2

多分あなたは戻り値とどのようにしてインクリメントされたチェックのために接続されているかの例を追加することができます。 –

0

シンプルなtry/catchブロックを使用して、検証が失敗したときに検証関数がエラーをスローするようにすることができます。

const validate =() => { 
    if(validationSucceeds) { 
    return true; 
    } else { 
    throw 'error message'; 
    } 
} 

const taskOne =() => { 
    validate() //some validation error happened when this got called.. 
} 

const taskTwo =() => { 
    validate() 
} 

const mainFunction =() => { 
    try { 
     taskOne(); 
     taskTwo(); //will not run because taskOne requested return 
    } catch(err) { 
     console.error(err); 
     return; 
    } 
} 

mainFunction(); 
関連する問題