jQuery Deferredの状態を調べる

Deferredオブジェクトの状態を調べます。pending、resolved、rejectedのいずれかを返します。デバック時などに有用なメソッドです。

書式

dfd.state()
var dfd = $.Deferred();
var state = dfd.state();

サンプル

Deferedオブジェクトの状態を取得して出力する

<body>
    <div class="main">
      <div class="header">
        <h1> サンプル </h1>
      </div>
      <div class="content">
        <form>
          <button class="button" type="button" name="button">Deferred</button>
        </form>
        <div class="desc"></div>
      </div>
      <div class="footer">
        <hr>
        <p class="copyright">2024 xxxx all rights reserved.</p>
      </div>
    </div>
    <script>
      $(document).ready(function(){
        function getProducts(){
          var dfd = $.Deferred();
          $('.desc').append(dfd.state() + '<br>');

          $.get('http://localhost/sample.php',{'flg':2}, null, 'json')
          .done(function(data){
            dfd.resolve(data);
            $('.desc').append(dfd.state() + '<br>');
          })
          .fail(function(){
            dfd.reject();
            $('.desc').append(dfd.state() + '<br>');
          });
          return dfd.promise();
        }

        $('button').on('click', function(){
          var promise = getProducts();

          promise
          .done(function(data){
            $('.desc').append(data.result);
          })
          .fail(function(data){
            $('.desc').append('APIコールに失敗しました。');
          });
        });
      });
    </script>
    </body>
実行結果
実行結果