簡體   English   中英

多次發出ajax請求

[英]Making an ajax request multiple times

我有三個“源”,每個源都需要進行ajax調用。 但是,由於Ajax是異步的,所以我不能僅僅將其放入for循環中。 同時,我無法執行async: false因為掛起瀏覽器很不好。

因此,我決定在其success回調中多次調用Ajax,並構造一種人工循環。 問題是,它無法正常工作(我將在稍后的問題中解釋錯誤)。 這是我的相關代碼。

    counter: 0,
    load: function(source, start_month, end_month, start_year, end_year) {
      start_month = parseInt(start_month) + 1;
      end_month = parseInt(end_month) + 1; 
      var parseDate = d3.time.format("%Y-%m-%d").parse; 
      if(source == 0) {
        $.ajax({
          dataType: "json",
          url: ...
          data: {
              ...
          },
          crossDomain: true,
          success: function(raw_data) {
            posts.counter++;
            if(posts.counter < 4) {
              alert(posts.counter);
              posts.load(source, start_month, end_month, start_year, end_year);
            } else {
              alert("plot graph");
            }
          }
        });
      }
...

整個代碼塊都在posts閉包內部。 只是幾個問題:

  1. 這是好風格嗎? 有沒有更有效的方法可以做到這一點?

  2. 出於某種原因, alert僅觸發兩次……難道不是要用1、2和3觸發3次嗎?

我建議使用JS Promise(也稱為延遲對象)。 查看jQuery的時間和功能( http://api.jquery.com/jquery.when/http://api.jquery.com/deferred.then/ )。 您可以使用延遲的對象進行3次異步調用,然后等待處理數據,直到所有3個調用都返回。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM