2016-07-19 7 views
-1

私は反応するクラスを持っていると私は店
キャッチされない例外TypeError:(//いくつかの機能)でない機能

class A extends React.component { 
    componentDidMount(){ 
    Store.getData(a).then(data =>{ 
     //some data 
    }); 
    } 

    render(){ 
    //some data 
    } 
} 

からのgetData関数を呼び出しています、店舗内の関数が

getData : function (a) { 
    return (a+b); 
} 
です

私は実行時にエラーが発生します

Uncaught TypeError: Store.getData(a).then is not a function どのように修正しますか?

+0

してください'
'要素を使用して質問内のコードを書式化しようとしないでください。普通に入力してから、編集ツールバーの '{}'ボタンを使ってコードとして書式を設定してください。 – nnnnnn

答えて

1

機能thenは、解決済みpromisesの処理に使用されます。あなたのコード関数では、getDataは単にa+bの結果を返します(つまり、約束は使用されません)。他の操作にthenを使用する場合は、getData関数を更新して、関数を使用するようにしてください。ただし、関数immediatellyの結果を使用できなかった理由は明らかではありません。あなたの関数getDataはとても代わりにあなたは、単にあなたのクラスのコンストラクタに直接機能getDataの結果を使用することができ、非同期ではありませんが

getData : function (a) { 
    return new Promise(function(resolve, reject){ 
     resolve(a + b); 
    }); 
} 

:ここ

は、あなたが約束を使用することができる方法である

class A extends React.component { 
    componentDidMount() { 
     var yourData = Store.getData(a); 
     // do what you need with this data 
    } 
    // the rest of your class 
} 
+0

注:最初のスニペットでは、['return Promise.resolve(a + b);'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve)を使用することができます。 )。 –

+0

その非常に大きなコードと私はそれを簡素化し、質問を掲載した。 .thenの代わりに他のオプションは何ですか? – user17422

+0

@JonathanLonowskiヒントをいただきありがとうございます。私はあなたが 'Promise.resolve'を直接使用できるかどうか分かりませんでした。 – dotnetom

関連する問題