qq_16609613
2017-08-19 07:58
采纳率: 0%
浏览 1.6k

关于js 方法同步问题 求高手解决,这个方法 怎么能像Java 那样执行啊

var cc=false;
var bb=false;

$('#start').click(function(){
    if(bb==true){
      //bb等于true执行后台方法
        query();
    }
   for(var i=0;i<10;i++){
      allCheck(i);//在这里就循环完了怎么能使他同步?
   } 
});

function allCheck(i){
    if(cc==false){
       $.ajax({
           async:false,
            url : "https://www.1688.com/index.jsonp?page="+i+"",
            type : "get",
            dataType : "jsonp",
            success : function (f) {
            f.rgv587_flag != undefined ? showLayerTips(f.url): showBestCategory(i,f);//

            }
            //爬网页结束
            });
    }
}
//获取成功执行
function showBestCategory(i,f){
   if(f!=null){
     bb=true;
   }else{
     bb=false;
   }
}

//弹出错误页面    
function  showLayerTips(url){
     cc =true;
}
//执行后台方法
function  query(){
    publicload(getRootPath() + "/searchRank","pageList","");
}
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • 当作看不见 2017-08-19 10:02

    $('#start').click(function(){
    if(bb==true){
    //bb等于true执行后台方法
    query(); //you回调函数的话,使用回调函数,没有的话可以设置同步方法 , 用定时器轮询是否函数执行成功,再继续执行
    }
    for(var i=0;i<10;i++){
    allCheck(i);//在这里就循环完了怎么能使他同步?
    }
    });

    评论
    解决 无用
    打赏 举报
  • qq_16609613 2017-08-19 10:03

    能不能 给我个简单的例子

    评论
    解决 无用
    打赏 举报
  • 算不算码农 2017-08-20 03:21
    本来请求就是个异步的过程,除非你让后台写个callback回调函数 执行你的回调方法类似ajax success方法 在回调方法里调用循环。
    
    评论
    解决 无用
    打赏 举报
  • 毕小宝 2017-08-20 05:18

    首先,你的query方法是不是向后台发送请求了呢?如果是的话,你这段代码就有问题,只能通过回调在query返回后再同步处理了。
    如果你的query就是普通方法,你这段代码就是顺序执行的。

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题