2016-05-19 5 views
0

私はこれを引き起こした奇妙なシナリオを持っています。 私は約束とチェーンを 'then'メソッドに戻す関数を持っています。 thenメソッドの中で、私は外部変数の1つにアクセスできますが、もう1つは未定義です。変数が約束からアクセスできない

私は、「then」関数でその名前を使用している可能性があると思っていました。値が定義されていないため、値は定義されていません。ここで

は、このようなシナリオが発生する可能性がありますどのような疑問に、私の場合の簡易版である:うまく動作するようです

class MessageSender { 
    constructor(){ 
    } 

    sendMessage(message, options) { 
     return somethingThatReturnPromise() 
      .then(function (response) { 
       // parameter 'message' is object as it should be, 
       // but'options' is undefined. 
       return response; 
      }) 
     return promise; 
    } 
} 

おかげ

+1

私はあなたが外側の変数をシャドウ 'VARのoptions'のどこかに持っているかなり確信しています。あなたの実際のコードを教えてください。 – Bergi

+1

...もう一つの可能​​性は 'sendMessage'が単に' options'引数なしで呼び出されたか、明示的に 'undefined'に設定されていることです。 – Bergi

+1

Btwでは、メソッド内に2つの 'return'があります:-) – Bergi

答えて

0

function sendMessage(message, options) { 
    return somethingThatReturnPromise() 
    .then(function (response) { 
     console.log('message: ' + message); 
     console.log('options: ' + options); 
     return response; 
    }); 
} 

function somethingThatReturnPromise(){ 
    return new Promise(function(resolve, reject){ 
     setTimeout(function(){ 
      resolve(); 
     }, 100); 
    }); 
} 

console.log('Starting...'); 
sendMessage('THE MESSAGE', 'THE OPTIONS').then(function(){ 
    console.log('All done.'); 
}); 

戻り

[email protected]:~/dev/test$ node asdf.js 
Starting... 
message: THE MESSAGE 
options: THE OPTIONS 
All done. 
関連する問題