日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Js中的callback机制

發(fā)布時間:2025/5/22 编程问答 12 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Js中的callback机制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

http://www.awflasher.com/blog/archives/906

?

Js中的callback機制,即回調(diào),可以這么形象的來理解,一個button存在這里,我們可以add一個action,那么如果這個button被觸發(fā)的時候會調(diào)用這個action。這其實就是一個callback機制。button像一個事件監(jiān)聽器,也是一個事件源;而action則是一個動作。

總結(jié)到j(luò)s在如下幾個地方常常用到:

1、動態(tài)加載(外部)js的時候,在加載完成之后進行一些操作,可以使用callback,拓展閱讀:如何判斷腳本加載完成、Javascript Callback的兩種實現(xiàn)方案

2、類似的,在加載iframe時也可以通過callback執(zhí)行一些操作,拓展閱讀:判斷?iframe?是否加載完成的完美方法

3、ajax的使用,提交請求后得到的返回值用callback機制解析使用,貌似現(xiàn)在大部分框架都是用得這種方式。

3、鏈式調(diào)用的時候,在賦值器方法中(或者本身沒有返回值的方法中)很容易實現(xiàn)鏈式調(diào)用,而取值器相對來說不好實現(xiàn)鏈式調(diào)用,因為你需要取值器返回你需要的數(shù)據(jù)而不是this指針,如果要實現(xiàn)鏈式方法,可以用回調(diào)函數(shù)來實現(xiàn),大家可以看看文章后面舉的例子

4、settimeout、setInterval的函數(shù)調(diào)用得到其返回值,由于兩個函數(shù)都是異步的,即:他們的調(diào)用時序和程序的主流程是相對獨立的,所以沒有辦法在主體里面等待它們的返回值,它們被打開的時候程序也不會停下來等待,否則也就失去了setTimeout及setInterval的意義了,所以用return已經(jīng)沒有意義,只能使用callback。

5、settimeout的延遲時間為0,這個hack經(jīng)常被用到,settimeout調(diào)用的函數(shù)其實就是一個callback的體現(xiàn),至于想了解settimeout的這個hack,大家有興趣可以看看realazy的文章:認識延遲時間為0?的setTimeout

6、事件處理中經(jīng)常需要用到callback機制,這個在前面的例子中(button)其實已經(jīng)有所體現(xiàn)。

7、其他一些需要在處理后進行一些額外處理的(這個比較泛,O(∩_∩)O~)

這些是我作的一個小小的總結(jié),歡迎大家提意見和更多的想法!

?

附:設(shè)計一個簡單的支持鏈式調(diào)用的類:

?

Js代碼??
  • function?Dog(name,color){??
  • ??????????????this.name=name||"";??
  • ?????????????this.color=color||"";??
  • }??
  • Dog.prototype.setName=function(name){??
  • ????????this.name=name;??
  • ????????return?this;??
  • };??
  • Dog.prototype.setColor(color){??
  • ????????this.color=color;??
  • ????????return?this;??
  • };??
  • Dog.prototype.yelp(){??
  • ????????alert("我的名字叫:"+this.name+",我的顏色是:"+this.color);??
  • ????????return?this;??
  • };??
  • ?

    使用方式:

    ?

    Js代碼??
  • var?dog?=?new?Dog();??
  • dog.setName("旺財").setColor("白色").yelp();??
  • ?

    如果取值器你也想支持鏈式調(diào)用?那么就采用回調(diào)函數(shù)來實現(xiàn),將本來應(yīng)該返回的值直接傳給回調(diào)函數(shù),而return仍然返回this指針。接著上面的Dog類寫一個方法:

    ?

    Js代碼??
  • Dog.prototype.getName(callback){??
  • ?????callback.call(this,this.name);??
  • ????????return?this;??
  • }??
  • ?

    使用方式:

    ?

    Js代碼??
  • function?showName(name){??
  • ????????alert(name);??
  • }??
  • dog.setName("旺財").getName(showName).setColor("白色");??
  • ?

    轉(zhuǎn)載于:https://www.cnblogs.com/yingzi/archive/2012/03/12/2392642.html

    總結(jié)

    以上是生活随笔為你收集整理的Js中的callback机制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 毛片网页 | av在线一区二区三区 | 麻豆成人91精品二区三区 | 申鹤乳液狂飙 | 亚洲色图导航 | 在线成人中文字幕 | av视| 日韩大片在线观看 | 草草浮力影院 | 色综合日韩 | 野战少妇38p | 人人妻人人澡人人爽久久av | 91亚洲综合 | 91禁看片 | 97精品国产97久久久久久免费 | 99精品色 | 久久b | 日本亚洲国产 | 亚洲人精品午夜射精日韩 | 丰满人妻一区二区三区四区 | 日韩在线毛片 | 久久黄页 | 国产剧情av引诱维修工 | 操网站| 毛片av网站 | 黄色香蕉网站 | 黄色网免费观看 | 日韩精品av一区二区三区 | 国产日本亚洲 | 国产精品视频一区二区在线观看 | 亚洲精品v天堂中文字幕 | 国产av天堂无码一区二区三区 | av在线亚洲天堂 | 总裁边开会边做小娇妻h | 国产一区二区三区精品在线 | 丝袜av网站 | 日本免费a级片 | 精品国产午夜福利在线观看 | 人人爽人人爽人人爽人人爽 | 69影院少妇在线观看 | 国产日韩欧美电影 | 日本黄色录像片 | 欧美在线色视频 | 日本精品人妻无码免费大全 | 激情视频在线播放 | 亚洲精品影视 | 91无打码 | 涩涩精品 | 欧美性大战久久久 | 精品香蕉一区二区三区 | 麻豆视屏| 91一区二区国产 | 午夜小电影 | 可以免费在线观看的av | 91精品国产乱码久久久久 | 国产乱淫av片免费看 | 中文字幕一区av | 素人fc2av清纯18岁 | 亚洲精品日韩精品 | 精品日本视频 | 久久久精品人妻一区二区三区 | 国产丰满美女做爰 | 精品无码一区二区三区在线 | 亚洲在线观看视频 | 中文字幕五区 | 成人爽a毛片一区二区 | 麻豆一区二区在线 | 污片在线免费看 | av网站在线观看免费 | 九色激情网| 一级片免费观看 | 国产一区在线看 | 久久久久xxxx| 欧美视频在线播放 | 精品肉丝脚一区二区三区 | 国产女同91疯狂高潮互磨 | 亚洲成人v | 亚洲黄色在线网站 | 免费国产黄色网址 | 色av一区二区 | 日本黄色xxxxx | 裸体的日本在线观看 | 91性高潮久久久久久久 | 日本狠狠操 | 天天视频黄色 | 狠狠婷| 丁香激情网 | 亚洲精品乱 | 国产人妻黑人一区二区三区 | 热热色国产 | 91视频在线免费看 | 777精品伊人久久久久大香线蕉 | 日韩中文字幕在线视频 | 亚洲精品中文字幕乱码三区 | 亚洲激情中文字幕 | 玩弄丰满少妇xxxxx性多毛 | av收藏小四郎最新地址 | 久久国产视频播放 | 另类一区二区三区 |