2017-08-29 8 views
1

コールバック内の変数に変数に最初に再割り当てせずにアクセスするにはどうすればよいですか?内部コールバック変数を返す処理方法

はたとえば、次のコードは動作します:

let volume = 0; 
loudness.getVolume((err, vol) => { 
    volume = vol; 
}); 

しかし、私はそれがconstに直接割り当て可能になりたかった場合。次の結果は未定義です。

const volume = loudness.getVolume((err, vol) => vol)); 
+0

私はecmascriptをよく知っているわけではありませんが、純粋なjavascriptの観点からは、あなたは返品を見逃しているようです。 – TheCog

+0

@TheCogこれは正しいes6の略語です –

+0

'getVolume()'を表示する必要がありますが、最も可能性が高いのは '' const volume = loudness.getVolume((err、vol)=> return vol)最初の例は機能しません(少なくとも必ずしもそうではありません)。コールバックの外に 'volume'を記録すると、' 0'です。 – baao

答えて

2

短い答えはできません。コールバック関数は、それ自身のスコープ内に残りのコードから分離されています。残りのコードで使用される情報を抽出する唯一の方法は、親スコープ内に存在する変数にその情報を割り当てることです。

簡単な言葉で、最初の例で行ったことをしてください。

+0

私はそれを残すことができました、これはちょうど好奇心の外でした。私は最近、変数の再割り当てだけでなく、 'let'の使用を妨げるeslint構成スキーマに出くわしました。私はこれがReduxのような状況でのみ有効だと思います。 – jfcali

関連する問題