看什么情况了啊  ajax可以直接设成同步的  webworker的话不用就是了  不是很明白你的意思

解决方案 »

  1.   

    Ajax (also AJAX ; an acronym for Asynchronous JavaScript and XML)
      

  2.   

    function getCallbackResult(){
    var transit = new BMap.DrivingRoute(map, {
                renderOptions: {
    }
    , policy:BMAP_DRIVING_POLICY_LEAST_DISTANCE
    , onSearchComplete: searchComplete //transit.search()异步执行的回调函数,在这个回调函数里可以获得我想要的time
     
    });
    var coor = eval(coors[i]);
    var start = new BMap.Point(coors[i][0],coors[i][1]);
    var end = new BMap.Point(coors[i+1][0],coors[i+1][1]);
    transit.search(start,end);//异步执行

    return time;
    }
    var time;
    function searchComplete(result){
         time = result.time;
         
    }function getTest(){
         var res = getCallbackResult();
         alert(res);//这个地方获取不到searchComplete里的time
    }
      

  3.   

    异步的肯定不行,要将你的alert语句(或者后续的需要异步结果的代码放到)
    function searchComplete(result){
         time = result.time;
         //////////后续代码
    }回调里面
      

  4.   

    改习惯吧,异步对客户端更友好,要不等着你的ajax返回时,浏览器就会象给卡住一样。
    只是个思维习惯的问题,都是可以实现的。
      

  5.   

    如果你喜欢折腾的花也是可以的哟,在function getTest()函数里加个setTimeout(),比如100毫秒的延迟,外面套个循环,在里守候,那边的异步执行完你就退出.
      

  6.   

    我尝试这种方法了啊,套循环,然后setTimeout,每次去获得全局变量的值。然后我测试的结果是无限循环。