2017-03-08 6 views
0

私は、多くの約束事を使用するノードアプリケーションを作成しています。私のコードを読めるようにするために、できるだけ多くの匿名関数を削除して、次のような1つのJavaScriptオブジェクトに格納しています。JavaScript:新しい変数をデフォルトのメソッドに渡す

let myCallbacks = { 
    myFirstCallback: function(fulfill, reject) { 
    // Do some stuff 
    if(noError) 
     fulfill({field: 'data'}); 
    else 
     reject('ERROR'); 
    }, 
    mySecondCallback: function(fulfill, reject) { 
    // Do some stuff 
    if(noError) 
     fulfill({field: 'data'}); 
    else 
     reject('ERROR'); 
    } 
} 

let myFirstMethod = function() { 
    return new Promise(myCallbacks.myFirstCallback); 
} 

let mySecondMethod = function() { 
    return new Promise(myCallbacks.mySecondCallback); 
} 

これは完璧に機能します。

今私はコールバックにデータを渡す必要がある機能があります。次のコード

let myCallbacks = { 
    myFirstCallback: function(fulfill, reject) { 
    // Do some stuff 
    if(noError) 
     fulfill({field: 'data'}); 
    else 
     reject('ERROR'); 
    }, 
    mySecondCallback: function(fulfill, reject) { 
    // Do some stuff 
    if(noError) 
     fulfill({field: 'data'}); 
    else 
     reject('ERROR'); 
    }, 
    myThirdCallback: function(fulfill, reject, someVariable) { 
    // Do some stuff 
    if(someVariable*3>10) 
     fulfill({field: 'data'}); 
    else 
     reject('ERROR'); 
    } 
} 

let myFirstMethod = function() { 
    return new Promise(myCallbacks.myFirstCallback); 
} 

let mySecondMethod = function() { 
    return new Promise(myCallbacks.mySecondCallback); 
} 

let myThirdMethod = function(someVariable) { 
    // Doesn't work 
    return new Promise(myCallbacks.myThirdCallback); 

    // Doesn't work 
    return new Promise(myCallbacks.myThirdCallback(fulfill, reject, someVariable); 

    // Doesn't work 
    return new Promise(myCallbacks.myThirdCallback(someVariable)); 
} 

myCallbacks.myThirdCallbackにmyThirdMethodからsomeVariableに合格する正しい方法は、()とは何ですかを想像してみ?

+0

まず第一に、 'myCallbacks.myThirdCallback'を呼び出すときに構文エラーがあります。最後に ''新しいプロミス ''を閉じる必要があります。 – edwarddamato

+0

ありがとうございました。私がやっていることのほんの一例として、これを本当に素早く入力しました。 – user316114

答えて

0

次の操作を行うことができます:

var thatOtherCallback = function(variable) 
{ 
    return function(fulfill, reject) 
    { 
    ... use variable and do whatever you need to do ... 
    } 
} 

... 

new Promise(thatOtherCallback(value)); 

しかし、あなたが達成しようとしているものをより明確に理解せずに、これは良い解決策であるかどうかを言うのは難しいです。

+0

これは完璧だった、私はそれについても考えなかったとは信じられない。ありがとうございました。 – user316114

関連する問題