복붙노트

[JQUERY] jQuery를, 간단한 폴링 예

JQUERY

jQuery를, 간단한 폴링 예

해결법


  1. 1.

    function doPoll(){
        $.post('ajax/test.html', function(data) {
            alert(data);  // process results here
            setTimeout(doPoll,5000);
        });
    }
    

  2. 2.여기에 jQuery를 사용하여 롱 폴링 (긴 개최 HTTP 요청)에 도움이되는 기사입니다. 이 문서에서 파생 된 코드 :

    여기에 jQuery를 사용하여 롱 폴링 (긴 개최 HTTP 요청)에 도움이되는 기사입니다. 이 문서에서 파생 된 코드 :

    (function poll() {
        setTimeout(function() {
            $.ajax({
                url: "/server/api/function",
                type: "GET",
                success: function(data) {
                    console.log("polling");
                },
                dataType: "json",
                complete: poll,
                timeout: 2000
            })
        }, 5000);
    })();
    

    이것은 아약스 요청이 완료된 후에 만 ​​다음 요청을 할 것입니다.

    그 위의 변형은 대기 / 타임 아웃 구간 직전 공경은 처음 호출을 실행한다.

    (function poll() {
        $.ajax({
            url: "/server/api/function",
            type: "GET",
            success: function(data) {
                console.log("polling");
            },
            dataType: "json",
            complete: setTimeout(function() {poll()}, 5000),
            timeout: 2000
        })
    })();
    

  3. 3.ES6에서,

    ES6에서,

    var co = require('co');
    var $ = require('jQuery');
    
    // because jquery doesn't support Promises/A+ spec
    function ajax(opts) {
      return new Promise(function(resolve, reject) {
        $.extend(opts, {
          success: resolve,
          error: reject
        });
        $.ajax(opts);
      }
    }
    
    var poll = function() {
      co(function *() {
        return yield ajax({
          url: '/my-api',
          type: 'json',
          method: 'post'
        });
      }).then(function(response) {
        console.log(response);
      }).catch(function(err) {
        console.log(err);
      });
    };
    
    setInterval(poll, 5000);
    

  4. 4.

    function poll(){
        $("ajax.php", function(data){
            //do stuff  
        }); 
    }
    
    setInterval(function(){ poll(); }, 5000);
    

  5. 5.

    function make_call()
    {
      // do the request
    
      setTimeout(function(){ 
        make_call();
      }, 5000);
    }
    
    $(document).ready(function() {
      make_call();
    });
    

  6. 6.jQuery.Deferred () 비동기 시퀀싱 및 오류 처리의 관리를 단순화 할 수 있습니다.

    jQuery.Deferred () 비동기 시퀀싱 및 오류 처리의 관리를 단순화 할 수 있습니다.

    polling_active = true // set false to interrupt polling
    
    function initiate_polling()
        {
        $.Deferred().resolve() // optional boilerplate providing the initial 'then()'
        .then( () => $.Deferred( d=>setTimeout(()=>d.resolve(),5000) ) ) // sleep
        .then( () => $.get('/my-api') ) // initiate AJAX
        .then( response =>
            {
            if ( JSON.parse(response).my_result == my_target ) polling_active = false
            if ( ...unhappy... ) return $.Deferred().reject("unhappy") // abort
            if ( polling_active ) initiate_polling() // iterative recursion
            })
        .fail( r => { polling_active=false, alert('failed: '+r) } ) // report errors
        }
    

    이 우아한 방식이지만, 일부 망 가지고있다 ...


  7. 7.이 솔루션 :

    이 솔루션 :

    jQuery를 최소 버전은 1.12이다

    $(document).ready(function () {
      function poll () {
        $.get({
          url: '/api/stream/',
          success: function (data) {
            console.log(data)
          },
          timeout: 10000                    // == 10 seconds timeout
        }).always(function () {
          setTimeout(poll, 30000)           // == 30 seconds polling period
        })
      }
    
      // start polling
      poll()
    })
    

  8. 8.

    (function poll() {
        setTimeout(function() {
            //
            var search = {}
            search["ssn"] = "831-33-6049";
            search["first"] = "Harve";
            search["last"] = "Veum";
            search["gender"] = "M";
            search["street"] = "5017 Ottis Tunnel Apt. 176";
            search["city"] = "Shamrock";
            search["state"] = "OK";
            search["zip"] = "74068";
            search["lat"] = "35.9124";
            search["long"] = "-96.578";
            search["city_pop"] = "111";
            search["job"] = "Higher education careers adviser";
            search["dob"] = "1995-08-14";
            search["acct_num"] = "11220423";
            search["profile"] = "millenials.json";
            search["transnum"] = "9999999";
            search["transdate"] = $("#datepicker").val();
            search["category"] = $("#category").val();
            search["amt"] = $("#amt").val();
            search["row_key"] = "831-33-6049_9999999";
    
    
    
            $.ajax({
                type : "POST",
                headers : {
                    contentType : "application/json"
                },
                contentType : "application/json",
                url : "/stream_more",
                data : JSON.stringify(search),
                dataType : 'json',
                complete : poll,
                cache : false,
                timeout : 600000,
                success : function(data) {
                    //
                    //alert('jax')
                    console.log("SUCCESS : ", data);
                    //$("#btn-search").prop("disabled", false);
                    // $('#feedback').html("");
                    for (var i = 0; i < data.length; i++) {
                        //
                        $('#feedback').prepend(
                                '<tr><td>' + data[i].ssn + '</td><td>'
                                        + data[i].transdate + '</td><td>'
                                        + data[i].category + '</td><td>'
                                        + data[i].amt + '</td><td>'
                                        + data[i].purch_prob + '</td><td>'
                                        + data[i].offer + '</td></tr>').html();
                    }
    
                },
                error : function(e) {
                    //alert("error" + e);
    
                    var json = "<h4>Ajax Response</h4><pre>" + e.responseText
                            + "</pre>";
                    $('#feedback').html(json);
    
                    console.log("ERROR : ", e);
                    $("#btn-search").prop("disabled", false);
    
                }
            });
    
        }, 3000);
    })();
    

  9. 9.나는 이것에 대한 작은 jQuery 플러그인을 만들었습니다. 당신은 그것을 시도 할 수 있습니다 :

    나는 이것에 대한 작은 jQuery 플러그인을 만들었습니다. 당신은 그것을 시도 할 수 있습니다 :

    $.poll('http://my/url', 100, (xhr, status, data) => {
        return data.hello === 'world';
    })
    

    https://www.npmjs.com/package/jquerypoll

  10. from https://stackoverflow.com/questions/6835835/jquery-simple-polling-example by cc-by-sa and MIT license