私はReact ES6で記述されたプロジェクトを持っています。これはBabelを使用してコンパイルされ、非常にうまく機能します。IEでのみ機能する1つのプロミス(多数あります!)を除きます。 Promiseはサポートされていません。そのため、すぐにIEのPromiseを提供するためにポリフィルを追加することを考えましたが、「ちょっと待って、あなたはすでにES6を書いていて、それがES5にコンパイルされていませんか?」のようでした。 SOよりも?
es6-promise などのポリフィルをプロジェクトに追加する意味はありますか?そして、もしあるなら、それを構文的にどのように使うべきですか?とりあえずインポートしているだけですが、どうにかして実装する必要があるでしょうか。
import Promise from 'es6-promise';
また、IEで問題を引き起こす可能性のある約束もここにあります。おそらく私が気づいていない構文エラーがあるのです! :)
new SingleObjectResource(DJ_CONST.API.setLanguage)
.put(null, {language_code: theLanguage})
.then(
function() {
window.location.reload();
}
);
私は同じ状況で、本番アプリをデプロイしなければならなかったので非常にイライラしました。私が抱えていた問題は、fetchjsのPromisesでした。これは私の命を救うために私がすることです
npm install --save es6-promise //first install as a dependency & then added in broswerify as dependency.
そして私のメインJSファイルで、これと呼ばれました
import "es6-promise/auto";
ここから https://github.com/stefanpenner/es6-promise#auto-polyfill
基本的に、その代替構文
require('es6-promise').polyfill();
基本的に、内部的にpolyfill()メソッドは、呼び出されたときにグローバル環境(この場合はPromise名)にパッチを適用します。
注:browserifyでgulpを使用していました。
バベルを使用していますが(機能を追加するのではなく、単にトラスパイルする)、ポリフィルが必要です。
パッケージをインストールするだけです。
npm install --save es6-promise
内側webpack.config.js
(または、webpackを使用していると仮定して、webpack構成がどこにあるか)
require('es6-promise').polyfill();
Polyfill()メソッドは、呼び出されたときにグローバル環境(この場合はPromise名)にパッチを適用します。詳細は https://github.com/stefanpenner/es6-promise
オフラインの夜にレビューコメントを受け取ったため、以前の返信を以前に編集できませんでした...レビューのフィードバックごとに埋め込み情報を含む返信を再投稿しました。ありがとう。
どこでも bluebird を使用しないのはなぜですか?その ネイティブの約束よりも速い 。そして IEのポリフィル も。そして私は彼らのために働きません:).
編集:
ネイティブプロミスの代わりにブルーバードを使用-
const Promise = require('bluebird');
results for 10000 parallel executions, 1 ms per I/O op
file time(ms) memory(MB)
callbacks-baseline.js 232 35.86
promises-bluebird-generator.js 235 38.04
promises-bluebird.js 335 52.08
promises-cujojs-when.js 405 75.77
promises-tildeio-rsvp.js 468 87.56
promises-dfilatov-vow.js 578 125.98
callbacks-caolan-async-waterfall.js 634 88.64
promises-lvivski-davy.js 653 109.64
promises-calvinmetcalf-lie.js 732 165.41
promises-obvious-kew.js 1346 261.69
promises-ecmascript6-native.js 1348 189.29
generators-tj-co.js 1419 164.03
promises-then-promise.js 1571 294.45
promises-medikoo-deferred.js 2091 262.18
observables-Reactive-Extensions-RxJS.js 3201 356.76
observables-caolan-highland.js 7429 616.78
promises-kriskowal-q.js 9952 694.23
observables-baconjs-bacon.js.js 25805 885.55
Platform info:
Windows_NT 6.1.7601 x64
Node.JS 1.1.0
V8 4.1.0.14
Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz × 4
2。 IEポリフィルコード-
import Bluebird from 'bluebird';
// Node
global.Promise = Bluebird;
// Browser
window.Promise = Bluebird;