2016-12-28 7 views
2

Если интернет-соединение потеряно во время извлечения в моем приложении, основанном на реакции, я получаю Network request failed, и приложение выходит из строя.Потеря связи во время извлечения вызывает сбой в приложении React-Native

updateClientData() { 

    var cachedData = null; 

    AsyncStorage.getItem('cachedData').then((cachedDataString) => { 
     cachedData = JSON.parse(cachedDataString);  
    }) 

    .done(() => { 

     if (cachedData) { 
     const base64 = require('base-64'); 
     return fetch('https://...data.json', { 
      method: 'get', 
      headers: { 
      'Authorization': 'Basic '+base64.encode("..."), 
      } 
     }) 

     .then((response) => { 
      // never called: 
      return response.json(); 
     }) 

     .catch((error) => { 
      //Shouldn't this catch network errors? It never gets called. 
      console.log('caught network error'); 
     }) 

     .then((responseJSON) => { 
      //do something with the JSON 
     }) 

     } 

    }); 

    }, 

Я бы с удовольствием справился с этим изящно, а не с его помощью. Есть идеи?

+0

насчет перемещения поймать вызов донизу наиболее вместо того, чтобы положить его между двумя затем вызывает? – eden

ответ

0

По какой-то причине, перемещение AsyncStorage вызова этой функции заставило ее работать нормально. Я действительно не нуждался в этом, пока не получил результат в любом случае, поэтому я его перевел.

Это работает сейчас:

updateClientData() {  

     const base64 = require('base-64'); 

     return fetch(clientListURL, { 
     method: 'get', 
     headers: { 
      'Authorization': 'Basic '+base64.encode("..."), 
     } 
     }) 

     .then((response) => { 
     return response.json(); 
     }) 

     .catch((error) => { 
     console.log('error...') 
     }) 

     .then((responseJSON) => { 
     // now do something with the JSON and the data from Async Storage 
    } 

    }, 

 Смежные вопросы

  • Нет связанных вопросов^_^