4 回答
TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
首先javascript腳本是線性執(zhí)行的
<javascript>
運(yùn)算A
運(yùn)算B
運(yùn)算C
</javascript>
執(zhí)行了"A"才會(huì)執(zhí)行B,然后才會(huì)執(zhí)行C
之所以出現(xiàn)你說(shuō)的異步現(xiàn)象。是因?yàn)槟阏{(diào)用BMap.Map類(lèi)getPoint是個(gè)ajax
這個(gè)ajax是一個(gè)http請(qǐng)求。不受javascript程序執(zhí)行的限制
因?yàn)?。getPoint就跳出了這個(gè)javascript腳本。自己去執(zhí)行了,而腳本繼續(xù)下一個(gè)語(yǔ)句alert(d1)
因此-----------
function(point){
if (point) {
map.centerAndZoom(point, 16);
map.addOverlay(new BMap.Marker(point));
d1=point.lng;
}
}
----------------------
這個(gè)ajax反回后才執(zhí)行的方法。并沒(méi)有工作
所以d1沒(méi)有=point.lng
如果象得到ajax請(qǐng)求后的d1結(jié)果
請(qǐng)?jiān)?br/>d1=point.lng;后面加入:
alert(d1);
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
ajax框架很多都提供了同步訪問(wèn)的功能,但是不推薦使用,因?yàn)樵诘却龜?shù)據(jù)返回時(shí),ui線程被占用,是瀏覽器出現(xiàn)無(wú)法響應(yīng)的情況。
可以使用setTimeOut來(lái)設(shè)置延時(shí)等待數(shù)據(jù)返回。
示例代碼如下。
var d1=-1;
var waitTimer=null;
//doajax
var doSuccess = fucntion(){
if(d1!=-1)
{
alert(d1);
}else{
waiTimer = setTimeOut(doSuccess,100);//設(shè)置100毫秒的延時(shí)
}
};
doSuccess ();
不保證代碼的正確性,只是告訴你大概的思路。
TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
<script type="text/javascript" LANGUAGE= "JavaScript">
var map = new BMap.Map("container");
var myGeo = new BMap.Geocoder();
var address="金沙江路129號(hào)";
var d1=0;
function funMYgetPoint(point)
{
myGeo.getPoint(address, function(point){
map.centerAndZoom(point, 16);
map.addOverlay(new BMap.Marker(point));
d1=point.lng;
}
, "上海市"); alert(d1);
}
//根據(jù)情況自己改,這里只執(zhí)行1次
var stop=1;
function tttt(){
if(point){if(stop>0){funMYgetPoint(point);stop=0;}}else{setTimeout('tttt()',100);}
}
tttt();
//手寫(xiě)代碼,未驗(yàn)證,如果報(bào)錯(cuò)請(qǐng)追問(wèn)
</script>
TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
$this.stop().animate({'bottom':'0px'},500);
});//.unbind('click').bind('click',spreadPictures);
#pp_thumbContainer{
/*position:fixed;
bottom:0px;*/
position:absolute;
left:0px;
height:65px;
width:100%;
}
添加回答
舉報(bào)
