2017-05-07 6 views
0

Ich benutze dieses Stück Code, um eine Anfrage mit React-Native asynchron zu machen, aber es scheint, als ob es nicht bekommen. Die Anfrage wurde separat getestet und die Daten sollten gültig sein.Asynchrone Anfrage in reactive-native

var data = [{name: 'simon'}]; 
    const req = new XMLHttpRequest(); 
    req.open('GET', testedValidUrl, true); 
    req.send(); 

    req.onreadystatechange = processRequest; 
    var name =""; 
    function processRequest(e) { 
     if(req.readyState == 4 && req.status == 200){ 
     var response = JSON.parse(req.responseText); 
     data[0].name = response.name; 
     } 
     // setTimeout(()=>{},1000); 
    } 

Ich dachte, dass vielleicht wegen der Gleichzeitigkeit es war und dass die große Array in der realen Anwendung benötigt weniger Zeit zu konstruieren, als die Daten von dem Server zu erhalten. Das Hinzufügen von setTimeout() hat es nicht behoben.

+0

fetch api ist viel bessere Option https://facebook.github.io/react-native/docs/network.html –

+0

Sie legen den Event-Listener, nachdem Sie die Anfrage gesendet haben. –

Antwort

0
var data = [{name: 'simon'}]; 
    const req = new XMLHttpRequest(); 
    function processRequest(e) { 
     if(req.readyState == 4 && req.status == 200){ 
     var response = JSON.parse(req.responseText); 
     data[0].name = response.name; 
    } 
    req.onreadystatechange = processRequest; 
    req.open('GET', testedValidUrl, true); 
    req.send(); 
    var name =""; 

Wenn Sie die Event-Handler gesetzt, (onreadystatechange), nachdem Sie die Anfrage senden/öffnen, hat die Readystate bereits geändert und so wird es nicht aufgerufen werden.

Verwandte Themen