2011年12月29日 星期四

處理呼叫API 的 FOR loop~

有些 Web API (google map or ...) 不能讓你直用 for 呼叫數次,因此,要採用 setTimeout 處理, 如下...


<html>
<head>
    <script src="jquery.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            //準備從1/1做到5/31
            var d = new Date(2011, 0, 1);
            var june = new Date(2011, 5, 1);
            //將待處理的日期放進Array中
            var jobQueue = [];
            while (d < june) {
                var yy = d.getFullYear();
                var mm = d.getMonth() + 1;
                if (mm < 10) mm = "0" + mm;
                var dd = d.getDate();
                if (dd < 10) dd = "0" + dd;
                //產生yyyy/MM/dd格式日期
                   jobQueue.push(yy + "/" + mm + "/" + dd);
                d.setDate(d.getDate() + 1);
            }

            var $body = $("body");
            function run() {
                //檢查是否還有待處理工具
                if (jobQueue.length > 0) {
                    s = jobQueue.shift();
                    $.post("DoSomething.aspx?date=" + s, {}, function (r) {
                        //顯示執行結果
     $body.append("<div>" + s + ":" + r + "</div>");
                        //使用setTimeout可調節連續執行的速度
      setTimeout(function () {
                            run();
                        }, 10);
                    });
                }
            }
            run();
        });
    </script>
</head>
<body></body></html>

這樣就可以處理回圈呼叫了~

Ref: http://blog.darkthread.net/post-2011-06-01-ajax-loop-with-js.aspx

沒有留言:

張貼留言