1

jQuery 3.0 Betaリリースによると

jQuery.Deferred は Promises/A+ 互換になりました jQuery.Deferred オブジェクトは、Promises/A+ および ES2015 Promises との互換性のために更新され、Promises/A+ Compliance Test Suiteで検証されました。


実行方法

テストは、Node.js 環境で実行することも、正しく設定されていればブラウザーで実行することもできます。

検証せずにブラウザでテストを実行する方法はnodejs?


注意してください。ブラウザではまだ実行されていないことに注意してくださいnodejs。@jaredsmithの支援は、使用してテストを実行するために不可欠でしたnodejs

4

3 に答える 3

1

A+ 準拠の Promises と古い jQuery Deferreds の最大の違いは、A+ Promises には適切なエラー処理があることです。この簡単なテストを実行することで、jQuery 3 の promise が適切なエラー処理を行うようになったことを確認できます。

function test(name, $) {
  var $name = $('<td>').text(name);
  var $result = $('<td>');
  var $row = $('<tr>')
      .append($name)
      .append($result)
      .appendTo('tbody');
  
  var def = $.Deferred();
  def.rejectWith(new Error("Error"));
  def.then(undefined, function() {
    $result.text('Fail').css('color', 'red'); // This will be overriden by success case
  }).then(function() {
    $result.text('Success').css('color', 'green');
  });
}

test('jQuery 1', $1);
test('jQuery 2', $2);
test('jQuery 3', $3);
<script src="https://code.jquery.com/jquery-1.12.3.min.js"></script>
<script>
  var $1 = $;
  $.noConflict();
</script>
<script src="https://code.jquery.com/jquery-2.2.3.min.js"></script>
<script>
  var $2 = $;
  $.noConflict();
</script>
<script src="https://code.jquery.com/jquery-3.0.0-beta1.js"></script>
<script>
  var $3 = $;
  $.noConflict();
</script>

<table>
  <thead>
    <tr>
      <td>Version</td>
      <td>Result</td>
    </tr>
  </thead>
  <tbody>
    </tbody>
</table>

于 2016-04-05T22:56:23.603 に答える