2017-08-14 10 views
4

私はReduxアクションにasync/await構文を組み込もうとしていますが、何らかの理由で動作しません。私は私の人生のために、次のと間違っているものを見ることができません。AwaitキーワードがReduxアクション内で動作しません

const actions = { 
    load: async (staff, date) => dispatch => { 
     const data = { 
      dateFrom: date, 
      dateTo: date, 
      person: staff, 
      personType: 'staff' 
     }; 

     const events = utils.getDataPromise('json/events/load', data); 
     const classes = utils.getDataPromise('json/timetable/load', data); 

     dispatch({ 
      type: actions.MYDAY_LOAD, 
      staff, 
      date: date || new Date(), 
      events: await events, 
      classes: await classes 
     }); 
    }, 
} 

utilsの機能は間違いなく約束を返します。

+0

あなたはサンクを使用していますか? – Isaac

+0

@isaacはい、私はサンクを使用しています。私が得ているエラーは 'await'キーワードであり、私のIDEでも間違った場所にいると言っています。 –

+1

'load'は非同期関数を返す非同期関数で、' dispatch'の前に非同期を動かします。この[質問]を確認してください(https://stackoverflow.com/questions/42489918/async-await-inside-arraymap) – Gerardo

答えて

6

これは、矢印関数の構文による一般的な誤りです。

あなたのload機能はasyncですが、匿名の矢印機能dispatch => {...}を返します。それはasync関数内だとき

awaitにのみ動作し、あなたのawait呼び出しは匿名の内部で、それが動作しない理由だというasyncない関数を返されます。 をdispatchの直前に移動すると正常に動作します。

const actions = { 
    load: (staff, date) => async dispatch => {...} 
    //      ^^^^^ move it here 
... 
} 
関連する問題