2016-07-11 4 views
0

こんにちはにおける約束をフェッチ拒否するように、私が使用して次のようにフェッチ:それは無効なJSONを返すフェッチした場合はどのようにそこにReduxの

export function fetchSomething() { 
    return ({fetch}) => ({ 
    type: FETCH_SOMETHING, 
    payload: { 
     promise: fetch('/someUrl', { 
     credentials: 'same-origin', 
     }).then(response => response.json()) 
     .then(function(response) { 
     if (response.status >= 400) 
     { 
      let error = new Error(response.statusText); 
      throw error; 
     } 

     return response; 
     }) 
    } 
    }); 
} 

全体の約束が拒否され、_ERRORアクションが派遣 - 例外がスローになることはありません。例外の代わりに、PromiseRejectionEventを送出します。

応答コードが> = 400の場合、例外がスローされ、_ERRORアクションもディスパッチされます。

例外をスローせずにステータスコードをチェックするときに、そのイベントを発行して約束を拒否するにはどうすればよいですか?

ありがとうございました

答えて

1

[OK]をクリックします。私はデフォルトのブラウザPromiseの代わりにBluebirdjsを使用しています。

そして、私は自分の約束ライブラリを使用isomorphic-fetchを使用していたので、私が登録している場合でも、フェッチのために:

window.Promise = require('../common/configureBluebird'); 

同型フェッチ異なるものを使用。 私はfetch-ponyfillに切り替えました。これはデフォルトでwindow.PromiseをPromiseとして使用しており、現在は動作しています。

then()に新しいError()をスローすると、自動的にキャッチされ、イベントが発生します。PromiseRejectionEvent

関連する問題