javascript中實現這個功能的是來自BOM的一 " /> 久草色视频,成人免费在线观看,欧美国产成人在线

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

javascript異步編程

就好像排隊,前面的人忙著忙著突然上廁所了,后面的人阻塞在這里,因此我們就需要讓前面的人死到一邊去,讓后面的人跟進……AJAX就是這個概念,請求還在繼續,但我們還可以做其他事。

Javascript中實現這個功能的是來自BOM的一個函數setTimeout,但相關的DOM操作也提供了一系列實現。如XMLHttpRequest對象與script標簽的onreadystatechange回調,image的onload與onerror回調,iframe的onload,DOM元素的事件回調,HTML5的跨域消息傳送postMessage,QuickTime與flash對象的加載……

setTimeout的零秒延遲在前些年時間被國內宣揚得特別厲害,但setTimeout是所有延遲中最慢的,最少要花上10多毫秒,如果用setTimeout來開發特效,這特效會運行得比較慢。下面是一個性能測試:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
Chromium Safari FirefoxOpera 10.10 Opera 10.50
setTimeout 4.32ms 10.201ms 10.302ms 10.38ms 9.876ms
img.onerror 0.199ms 0.678ms 0.201ms 0.058ms 0.575ms
script.onreadystatechangefailfail fail fail fail
script.onload0.414ms 0.138ms 0.414ms fail fail
xhr.onreadystatechangefail0.622ms fail 0.078ms 0.079ms
self.postMessage0.096ms 0.123ms 0.112ms 0.049ms 0.094ms

為了處理這種異步調用,Mochikit從Python的Twisted框架借來了Deferred這個類,并用它來處理AJAX的回調。AJAX的回調通常有兩種,成功加載時的回調與請求失敗的回調,IE8的XDomainRequest就有這兩種回調了,標準瀏覽器的script與image也有這兩種回調,分別稱之為onload與onerror。Mochikit的Deferred實例就內置一個數組,每次包含這兩種回調,依次執行。Mochikit這偉大的遺產后來由dojo發揚光大了,至于怎么用,自己google吧。

下面是我的框架對它的應用,我已把它整合到我的框架中:
復制代碼 代碼如下:
<!doctype html>
<html>
<head>
<title>異步操作例子 by 司徒正美</title>
<meta charset="utf-8"/>
<meta content="IE=8" http-equiv="X-UA-Compatible"/>
<meta name="keywords" content="異步操作例子 by 司徒正美" />
<meta name="description" content="異步操作例子 by 司徒正美" />
<%= Javascript_include_tag "dom.js" %>
<%= Javascript_tag "window._token = '#{form_authenticity_token}'" if ActionController::Base.allow_forgery_protection %>
<script type="text/Javascript" charset="utf-8">
dom.ready(function(){
dom.require("ajax");
dom.ajax({method:"post",
async:true,
dataType:"text",
data:{authenticity_token:window._token}
}).next(function(a){
alert(a)
});
dom.jsonp({url:"http://del.icio.us/feeds/json/fans/stomita"}).next(function(json){
alert(json)
}).error(function(e){
alert(e)
});
});
</script>
</head>
<body>
</body>
</html>

后臺:
復制代碼 代碼如下:
class HomeController < ApplicationController
def index
if request.xhr?
name = params[:name]
puts "-------------"
render :text => "<p>The time is <b>" + DateTime.now.to_s + "</b></p>"
end
end
end

在日本一博客提到這樣一個捕捉異步錯誤的例子:
復制代碼 代碼如下:
function throwError(){
throw new Error('ERROR');
}
try{
setTimeout(throwError, 3000);
} catch(e){
alert(e);
}

看來try...catch是無法捕捉這種形式的錯誤,window.onerror可以,但好像只有IE與FF支持。如果用Deferred來處理,就簡單了!
復制代碼 代碼如下:
dom.Deferred.next(function () {
throw new Error("錯誤")
}).wait(1).error(function(e){
alert(e instanceof Error)
});

列隊處理。由于是使用了異步,因此不會阻塞頁面的演染。
復制代碼 代碼如下:
<!doctype html>
<html>
<head>
<title>異步操作例子 by 司徒正美</title>
<meta charset="utf-8"/>
<meta content="IE=8" http-equiv="X-UA-Compatible"/>
<meta name="keywords" content="異步操作例子 by 司徒正美" />
<meta name="description" content="異步操作例子 by 司徒正美" />
<%= Javascript_include_tag "dom.js" %>
<script type="text/Javascript" charset="utf-8">
dom.require("deferred");
dom.require("query");
dom.ready(function(){
var a = dom("#aaa")[0];
dom.Deferred.loop(10,function(i){
a.innerHTML += i+"<br/>"
});
dom.Deferred.loop(10,function(i){
a.innerHTML += String.fromCharCode(i+97)+"<br/>"
});
dom.Deferred.loop(10,function(i){
a.innerHTML += "司徒正美"+i+"<br/>"
});
});
/*結果
0
a
司徒正美0
1

司徒正美1
2
c
司徒正美2
3
d
司徒正美3
4
e
司徒正美4
5
f
司徒正美5
6
g
司徒正美6
7
h
司徒正美7
8
i
司徒正美8
9
j
司徒正美9
*/
</script>
</head>
<body>
<div id="aaa"></div>
</body>
</html>

JavaScript技術javascript異步編程,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 日日摸夜夜嗷嗷叫日日拍 | 亚洲午夜久久久精品电影院 | 精品久久99麻豆蜜桃666 | 久草国产在线播放 | 亚洲女初尝黑人巨磁链接 | 天天射天天爱天天干 | 九九精彩视频在线观看视频 | 欧美日韩中文国产一区 | 国产在线观看免费 | 亚洲一在线 | 国产自啪偷啪视频在线 | 亚洲国产韩国欧美在线不卡 | 一级做a爰片久久毛片免费 一级做a爰片久久毛片潮喷动漫 | 大肚婆孕妇网 | 男人J桶进男人屁股过程 | 久久久久久久久久久福利观看 | 亚洲 欧美 国产 在线 日韩 | 久久人妻AV一区二区软件 | 国产精品久久毛片A片软件爽爽 | 欧美老妇与zozoz0交 | 久久视频这只精品99re6 | 男人扒开添女人下部口述 | 国产精品97久久AV色婷婷综合 | 2021扫黑风暴在线观看免费完整版 | 在线观看亚洲免费人成网址 | 亚洲国产在线播放在线 | chinese情侣自拍啪hd | 18禁黄无遮挡禁游戏在线下载 | 精品极品三大极久久久久 | 狠狠躁天天躁小说 | 亚洲乱码中文字幕久久孕妇黑人 | 午夜理论片日本中文在线 | 男人的天堂MV在线视频免费观看 | 久久黄色小视频 | 真实农村女人野外自拍照片 | 国产精品福利电影 | adc网址在线观看 | 老司机试看午夜 | 中文字幕乱码一区AV久久 | 国产日韩欧美有码在线视频 | 国产精品久久久久久日本 |