web-dev-qa-db-ja.com

IE11で約束を機能させる方法

Internet Explorer 11を除くすべてのブラウザーで完全に実行される単純なコードがあります。すべてのブラウザーでどのように機能させることができますか?

Codepen

前もって感謝します。

'use strict';

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

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

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

このタイプのコードをIE11(ES6の多くをまったくサポートしない)で実行したい場合は、サードパーティのpromiseライブラリ( Bluebird など)を取得し、そのライブラリを含めて変更する必要がありますES5コーディング構造(矢印関数なし、letなどなど)を使用するコーディング。これにより、古いブラウザーがサポートする範囲内で生活できます。

または、トランスパイラー( Babel など)を使用して、ES6コードを古いブラウザーで動作するES5コードに変換できます。

Bluebird promiseライブラリを使用して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>
77
jfriend00