第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

求問,關(guān)于javascript的回調(diào)函數(shù)同步問題?求大佬幫忙看看!

求問,關(guān)于javascript的回調(diào)函數(shù)同步問題?求大佬幫忙看看!

不負(fù)相思意 2021-10-13 21:11:05
我有如下代碼,執(zhí)行結(jié)果是ALERT顯示0(回調(diào)的結(jié)果肯定不是0)。我想可能是因?yàn)榛卣{(diào)函數(shù)的異步問題,但又不能將ALERT放在回調(diào)函數(shù)內(nèi)(有其它原因的),如果的確零步執(zhí)行原因的話,有什么辦法將異步改成同步?即等回調(diào)函數(shù)返回后在執(zhí)行后面的JAVASCRIPT代友。請直接幫我改好,謝謝。<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;myGeo.getPoint(address, function(point){ if (point) {map.centerAndZoom(point, 16); map.addOverlay(new BMap.Marker(point)); d1=point.lng;} }, "上海市"); alert(d1);</script>
查看完整描述

3 回答

?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個(gè)贊

首先javascript腳本是線性執(zhí)行的
<javascript>
運(yùn)算A
運(yùn)算B
運(yùn)算C
</javascript>
執(zhí)行了"A"才會(huì)執(zhí)行B,然后才會(huì)執(zhí)行C
之所以出現(xiàn)你說的異步現(xiàn)象。是因?yàn)槟阏{(diào)用BMap.Map類getPoint是個(gè)ajax
這個(gè)ajax是一個(gè)http請求。不受javascript程序執(zhí)行的限制
因?yàn)椤etPoint就跳出了這個(gè)javascript腳本。自己去執(zhí)行了,而腳本繼續(xù)下一個(gè)語句alert(d1)
因此-----------
function(point){
if (point) {
map.centerAndZoom(point, 16);
map.addOverlay(new BMap.Marker(point));
d1=point.lng;
}
}
----------------------
這個(gè)ajax反回后才執(zhí)行的方法。并沒有工作
所以d1沒有=point.lng
如果象得到ajax請求后的d1結(jié)果
請?jiān)?br/>d1=point.lng;后面加入:
alert(d1);



查看完整回答
反對 回復(fù) 2021-10-17
?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊

ajax框架很多都提供了同步訪問的功能,但是不推薦使用,因?yàn)樵诘却龜?shù)據(jù)返回時(shí),ui線程被占用,是瀏覽器出現(xiàn)無法響應(yīng)的情況。
可以使用setTimeOut來設(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 ();
不保證代碼的正確性,只是告訴你大概的思路。



查看完整回答
反對 回復(fù) 2021-10-17
?
弒天下

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊

var map = new BMap.Map("container");
var myGeo = new BMap.Geocoder();
var address="金沙江路129號(hào)";
var d1=0;
myGeo.getPoint(address, function(point){
if (point) {
map.centerAndZoom(point, 16);
map.addOverlay(new BMap.Marker(point));
d1=point.lng;
outer();
}
}, "上海市");

function outer(){
alert(d1);
}



查看完整回答
反對 回復(fù) 2021-10-17
  • 3 回答
  • 0 關(guān)注
  • 261 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)