2016-12-28 7 views
2

反応ネイティブのアプリでフェッチ中にインターネット接続が失われた場合は、Network request failedと表示され、アプリがクラッシュします。フェッチ中に接続が切断されると、ネイティブアプリでクラッシュする

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

何下にキャッチコールを動かす最も代わりに呼び出して、2つの間にそれを置くことについて? – 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 
    } 

    }, 
関連する問題