2016-12-29 27 views
0

Ich versuche, den folgenden Codeblock von den offiziellen react-native docs auszuführen:Kann nicht async bekommen arbeiten reagieren-native

async function getMoviesFromApi() { 
    try { 
     let response = await fetch('https://facebook.github.io/react-native/movies.json'); 
     let responseJson = await response.json(); 
     return responseJson.movies; 
    } catch(error) { 
     console.error(error); 
    } 
    } 

Wenn ich das versuchen laufen bekomme ich den Fehler:

"Unexpected token, expected ((31:17)" 

Wenn ich das Schlüsselwort function entferne, funktioniert es gut.

Welchen Unterschied macht es, wenn ich das Funktionsschlüsselwort verwende oder nicht? Ist es, weil ich es in einer Klasse verwende? Wo in der Dokumentation zeigt dies an? Ist es in der reakt-nativen Dokumentation oder der JavaScript-Dokumentation? Ich kann es auch nicht finden, obwohl ich nach dem Falschen suchen könnte.

ich verwende reagieren-native: 0.38.0 (mit reagieren-native-cli: 1.2.0)

+0

Welche Version von JS ist das? [Es funktioniert in Babel] (http://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=true&presets=latest&experimental=false&loose=false&spec=false&code=async%20function%20getMoviesFromApi()% 20% 7B% 0D% 0A % 20% 20%% 20% 7B% 0D% 0A% 20% 20% 20% 20% 20Response% 20% 3D% 20await% 20fetch ('https% 3A% 2F% 2Ffacebook.github.io% 2Freact-native% 2Fmovies. json ')% 3B% 0D% 0A% 20% 20% 20% 20let% 20ResponseJson% 20% 3D% 20await% 20response.json()% 3B% 0D% 0A% 20% 20% 20% 20zurück% 20AntwortJson.movies% 3B% 0D% 0A% 20% 20% 7D% 20Catch (Fehler)% 20% 7B% 0D% 0A% 20% 20% 20% 20console.Fehler (Fehler)% 3B% 0D% 0A% 20% 20% 7D% 0D% 0A% 7D & Spielplatz = wahr). – 4castle

Antwort

3

Is it because I am using it in a class?

Wahrscheinlich. Die Syntax für die Methoden in einer Klasse zu erklären ist

class Foo { 
    method() {} 
} 

nicht

class Foo { 
    function method() {} 
} 

Daher ist eine asynchrone Methode deklariert wird als

class Foo { 
    async method() {} 
} 

Where in the documentation does it indicate this? Is it in the react-native documentation or the JavaScript documentation?

Es JavaScript ist. Reagieren ist ein Framework/eine Bibliothek, keine Sprache. Die von Ihnen verwendete Syntax ist JavaScript (außer JSX natürlich, aber das ist nicht spezifisch für React).

Siehe die MDN documentation about classe s.