2017-11-21 12 views
-1

いくつかのUtils機能を持つStorage.jsファイルを作成します。 ほとんどの場合、私はこの方法でそれを使用します 非同期someFunction()=> しかし、私の場合、私は構文 import async関数の使い方は?

import {AsyncStorage} from 'react-native' 
 

 
export const saveOnDevice = async (name, data) => { 
 
\t try { 
 
\t \t if (data !== null && data !== undefined) { 
 
\t \t \t await AsyncStorage.setItem(name, JSON.stringify(data)); 
 
\t \t } 
 
\t } catch (error) { 
 
\t \t console.log(error) 
 
\t } 
 
}; 
 

 
export const getOnDevice = async (name) => { 
 
\t try { 
 
\t \t const data = await AsyncStorage.getItem(name); 
 
\t \t if (data !== null && data !== undefined) { 
 
\t \t \t return data 
 
\t \t } 
 
\t } catch (error) { 
 
\t \t console.log(error) 
 
\t } 
 
};

に問題がある{fooは= getOnDevice(someNameという)待ってみましょう}

どのように非同期関数を宣言せずに使用できますか?

import {saveOnDevice} from '../../utils/Storage' 
 
export function fetchUrlWithRedux(url) { 
 
\t return (dispatch) => { 
 
\t \t dispatch(fetchUrlRequest(url)); 
 
\t \t return fetchUrl(url, dispatch).then(([response, json]) => { 
 
\t \t \t if (response.status === 200) { 
 
\t \t \t \t saveOnDevice('url', json.data.host); 
 
\t \t \t \t dispatch(fetchUrlSuccess(json)) 
 
\t \t \t } 
 
\t \t \t else { 
 
\t \t \t \t dispatch(fetchUrlError()) 
 
\t \t \t } 
 
\t \t }).catch(() => dispatch(fetchUrlError())) 
 
\t } 
 
}

は私のコードの何が問題になっているのですか?

saveOnDevice()にコールする前に、私はあなたが.then()に渡された匿名関数の前にasyncを追加する必要があると思う

答えて

0

あなたがasync/awaitを使用したくない場合あなたの主なファイルは、あなたは、以下のように約束を使用することができます。

saveOnDevice('url', json.data.host).then(() => { 
    dispatch(fetchUrlSuccess(json)) 
}) 
0

ありがとう、そしてawait

import {saveOnDevice} from '../../utils/Storage' 
export function fetchUrlWithRedux(url) { 
    return (dispatch) => { 
     dispatch(fetchUrlRequest(url)); 
     return fetchUrl(url, dispatch).then(async ([response, json]) => { 
      if (response.status === 200) { 
       await saveOnDevice('url', json.data.host); 
       dispatch(fetchUrlSuccess(json)) 
      } 
      else { 
       dispatch(fetchUrlError()) 
      } 
     }).catch(() => dispatch(fetchUrlError())) 
    } 
} 
関連する問題