2017-11-06 3 views
0

Ich verwende AsyncStorage, um einige Informationen (wie Name, E-Mail) in der Anwendung zu speichern und abzurufen. Wenn ich setItem aufruft, gibt es das Versprechen "_45" zurück: 0, "_ 65": 0, "_ 55": null: "_ 75": null und getItem geben auch dasselbe zurück. Wie setze ich den Wert in AsyncStorage? Ich verwende den folgenden Code ein:AsyncStorage setItem/getItem funktioniert nicht?

export async function setItem(key, value) { 
 
    try { 
 
    var data = await AsyncStorage.setItem(key, value); 
 
    } catch (error) { 
 

 
    } 
 
} 
 

 
export async function getItem(key) { 
 
    try { 
 
    var item = await AsyncStorage.getItem(key); 
 
    if(item !== null) { 
 
     return item; 
 
    } 
 
    } catch (error) { 
 

 
    } 
 
}

Vielen Dank im Voraus.

Antwort

0

Ihre Funktionsrückgabe verspricht. async/await ist nur ein syntaktischer Zucker. Wenn Sie Artikel erhalten von AsyncStorage mit Ihrem Helfer wollen, müssen Sie so verwenden:

getItem('someKey') 
    .then(val => console.log(val) 
    .catch(err => console.log(err)) 

oder

function async getItemAndDoSomething() { 
    const item = await getItem('someKey') 
    // do something with your item here 
} 

getItemAndDoSomething() 
+0

Aber es wird wie folgt zurückkehren ** "_ 45": 0, "_ 65": 0, "_ 55": MyExpectedValue, "_ 75": null **. Wie kann ich auf den Wert entweder zugreifen, indem ich benutze ** _ 55 ** oder eine andere Möglichkeit gibt es? –

0

Der Rückgabewert einer async Funktion wird in einem Versprechen eingewickelt. Innerhalb Ihres getItem können Sie auf item als ein Standardobjekt zugreifen, aber Anrufer von getItem müssen entweder (1) eine asynchrone Funktion sein oder (2) den Rückgabewert als ein Versprechen behandeln.