3

isomorphic-fetchfetch()のメソッドをオーバーライドして、このリクエストを送信する直前に呼び出し、リクエストが終了した後に. ここで、新しいフェッチを元のフェッチ メソッドと同じようにチェーンできるようにオーバーライドしたいと考えています。したがって、すべての約束を尊重/転送する必要があります。要約すると、私はしたい:showLoader()hideLoader()

  • オリジナルを上書きfetch()するfetchPlus(extraArg)
  • fetchPlus()fetch()呼び出しの直前と完了直後に追加の作業を行う必要がありますfetch()
  • fetchPlus()元の用途の代わりにドロップインする必要がありますfetch()
  • 私ができるように、チェーンをサポートする必要があります。

fetchPlus(extraArg, originalArgs...).then(response => {...}).catch(error => {...});

私は JS、React、Redux にかなり慣れていないので、何か明らかなことを見逃していたらすみません。私は読んで、それがPromisefetch()を返すことを知っていたので、応答をさらに渡したり、エラーを処理したりできます。私は、responseHandler と errorHandler 関数を fetchPlus への引数として渡すという醜い方法を見つけました。

fetchPlus(extraArg, url, options, responseHandler, errorHandler) {
    showLoader(extraArg);
    fetch(url, options)
    .then(response => {
        hideLoader(extraArg);
        responseHandler(response);
    }.catch(error => { errorHandler(error); });
}

しかし、私はそれがきれいだとは思いません。Promise が正しく渡される、元のフェッチのドロップイン置換を見つけることができるかどうかを確認したいと思います。

どんな助けでも大歓迎です!

4

1 に答える 1

6

Promise を返すことがわかっている場合は、返さないのはなぜですか?

fetchPlus(extraArg, url, options) {
    showLoader(extraArg);
    return fetch(url, options)
      .then(response => {
        hideLoader(extraArg);
        return response;
      })
}

次に、それを使用します。

fetchPlus(extraArg, url, options)
  .then(response => ...)
  .catch(error => ...)
于 2016-09-12T18:03:22.733 に答える