LoginSignup
14
13

More than 5 years have passed since last update.

npmが使えない時にIE11でPromiseを使う

Last updated at Posted at 2018-10-04

Promise is undefined対策

cdnからpolyfillライブラリを読み込む

Promiseのpolyfill(IE11お前もか!)にも書かれている通り以下のソースをコピペしたい所だが、結構古い記事だったので今現在最新のものを持ってくるようにする。
多分最新はここに置いてあると思います。
https://www.promisejs.org/

<script src="https://www.promisejs.org/polyfills/promise-done-7.0.4.min.js"></script>

アロー関数を使わない

アロー関数があるとsyntax errorになってしまうのでfunctionに置き換えましょう。

Promiseを返す時 アロー関数ver(動作しない)

  function ajaxData() {
    return new Promise((resolve) => {
      $.ajax({ 
          url    : xxx,
          type   : 'GET',
          timeout: 5000
      })
      .done((data) => {
        resolve(data);
      })
    });
  }

Promiseを返す時 function ver(動作する)

  function ajaxData() {
    return new Promise(function(resolve){
      $.ajax({ 
          url    : xxx,
          type   : 'GET',
          timeout: 5000
      })
      .done(function(data){
        resolve(data);
      })
    });
  }

Promiseの結果からthenで繋げるとき アロー関数 ver(動作する)

  function parseAjaxData() {  
    ajaxData().then((result) => {
      console.log(result);
    })
  }

Promiseの結果からthenで繋げるとき function ver(動作する)

  function parseAjaxData() {  
    ajaxData().then(function(result) {
      console.log(result);
    })
  }
14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13