1. ホーム
  2. javascript

[解決済み] Internet Explorer 11でプロミスをサポートするには?

2023-06-29 21:15:40

質問

Internet Explorer 11 以外のすべてのブラウザで完璧に動作するシンプルなコードを持っています。どうすればすべてのブラウザで動作するようになりますか?

コードペン

'use strict';

let promise = new Promise((resolve, reject) => {

  setTimeout(() => {
    resolve("result");
  }, 1000);
});

promise
  .then(
    result => {
      alert("Fulfilled: " + result);
    },
    error => {
      alert("Rejected: " + error);
    }
  );

どのように解決するのですか?

この種のコードを IE11 (ES6 の多くをまったくサポートしていない) で実行したい場合、サードパーティの約束ライブラリ (たとえば ブルーバード のような)サードパーティのプロミスライブラリを入手し、そのライブラリをインクルードして、ES5のコーディング構造を使用するようにコーディングを変更します(矢印関数や let など...)を使用するようにコーディングし、古いブラウザがサポートする制限の中で生活できるようにします。

あるいは、トランスパイラ(例えば バベル のような) トランスパイラを使用して、ES6 コードを古いブラウザで動作する ES5 コードに変換することもできます。

以下は、Bluebird promise libraryを使用してES5構文で書かれたあなたのコードのバージョンです。

<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/3.3.4/bluebird.min.js"></script>

<script>

'use strict';

var promise = new Promise(function(resolve) {
    setTimeout(function() {
        resolve("result");
    }, 1000);
});

promise.then(function(result) {
    alert("Fulfilled: " + result);
}, function(error) {
    alert("Rejected: " + error);
});

</script>