6

これが私の言いたいことです。

ブラウザーがフェッチ APIをネイティブにサポートしている場合(Chrome など)、ネイティブのブラウザーが使用されPromiseます。

別の Promise ライブラリ (たとえば、bluebirdfetchなど) を使用しても、ネイティブはまだそれを使用していませんPromise。代わりにネイティブ実装を使用しています。

それをオーバーライドする方法はありますか?

問題の例:

window.Promise = function () { return null; };


fetch('/api')
.then(function (res) {
    console.log('fetch result!', res); // still works because it uses native Promise
});

なぜそれが必要なのですか?ライブラリがサポートし、ネイティブの Promise にはないグローバルな拒否イベントを利用したいと考えています。bluebird

4

3 に答える 3

4

@MinusFourが提案したのと同じ行に沿ったコードを次に示します。globalモジュール内ではなくブラウザーを使用してwindowいる場合は、 に置き換えます。

const fetch = global.fetch
global.fetch = function() {
    return Promise.resolve(fetch.apply(global, arguments))
}
于 2016-03-13T16:56:59.000 に答える