0

如果我等待两个 $ajax,我可以写 $.when($.ajax(1),$.ajax(2)).then(myFunc, myFailure); 但是我必须等待数百个$ajax,所以我制作了一个地图来执行,但是var mapArray = $ .map总是为空。如何解决这个问题或者有更好的方法来解决它?

var times=0;
$("#pComplete").bind("click",
function(event, ui) {
    $.mobile.loading('show');
    db.readTransaction(function(tx) {
    tx.executeSql('select * from insphis insp where TaskNo='+localStorage.getItem("TaskNo"), [],
        function(tx, results) {
            var len = results.rows.length;
            //times=len;
            var arr=new Array();
            for (var i = 0; i < len; i++)
            {
                arr.push(results.rows.item(i));
            }

            var mapArray=$.map(arr, function(val, i){
                var str='http://192.168.1.29:9999/IInspectionService.svc/web/AddInspHis?taskNo=' + localStorage.getItem("TaskNo") + '&propNo=' + val.PropNo + '&value=' + val.Value + '&value2=' + val.Value2;
                    $.ajax({
                    type: 'GET',     
                    url: str,
                    contentType: 'text/json',
                    dataType: "jsonp",
                    jsonp: "callback",
                    async: true,
                    success: function(json) {
                    //  --times;
                        console.log(json);
                    //  if(times==0)
                    //  {
                    //      alert("OK!");
                    //      loadIndex();
                    //  }
                        }
                    });
            });
            $.when(mapArray).done(function(){
                    console.log("all OK");
                })
                .fail(function(){ alert("ERROR"); });

        },
        null);//end of executeSql
        });
});
4

0 回答 0