国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JavaScript中使用Callback控制流程介紹_javascript技巧

來源:懂視網 責編:小采 時間:2020-11-27 21:35:46
文檔

JavaScript中使用Callback控制流程介紹_javascript技巧

JavaScript中使用Callback控制流程介紹_javascript技巧:javascript中隨處可見的callback對于流程控制來說是一場災難,缺點顯而易見: 1.沒有顯式的return,容易產生多余流程,以及由此引發的bug。 2.造成代碼無限嵌套,難以閱讀。 下面就來說說怎么解決避免上述的問題。 第一個問題是一個習慣問題,在使用call
推薦度:
導讀JavaScript中使用Callback控制流程介紹_javascript技巧:javascript中隨處可見的callback對于流程控制來說是一場災難,缺點顯而易見: 1.沒有顯式的return,容易產生多余流程,以及由此引發的bug。 2.造成代碼無限嵌套,難以閱讀。 下面就來說說怎么解決避免上述的問題。 第一個問題是一個習慣問題,在使用call

javascript中隨處可見的callback對于流程控制來說是一場災難,缺點顯而易見:

1.沒有顯式的return,容易產生多余流程,以及由此引發的bug。
2.造成代碼無限嵌套,難以閱讀。

下面就來說說怎么解決避免上述的問題。

第一個問題是一個習慣問題,在使用callback的時候往往會讓人忘了使用return,這種情況在使用coffee-script的時候尤甚(雖然它在編譯成javascript時會自行收集最后的數據作為返回值,但是這個返回值并不一定代表你的初衷)。看看下面的例子。

代碼如下:
a = (err, callback)->
callback() if err?
console.log 'you will see me'

b = ->
console.log 'I am a callback'

a('error', b)

在這種所謂”error first”的代碼風格中,顯然我們不希望出錯時方法a中的后續代碼仍然被執行,但是又不希望用throw來讓整個進程掛掉(要死也得優雅的死嘛~),那么上面的代碼就會產生bug。

一種解決方案就是老老實實的寫if...else...,但是我更傾向于下面的做法:
代碼如下:
a = (err, callback)->
return callback() if err?
console.log 'you will not see me'

b = ->
console.log 'I am a callback'

a('error', b)

javascript異步方法中的返回值大多沒什么用處,所以這里用return充當一個流程控制的角色,比if...else...更少的代碼,但是更加清晰。

第二個問題是娘胎里帶來的,很難根除。

一種不錯的方法是使用一些流程控制模塊來將代碼顯得更加有條理,比如async就是一個不錯的模塊,提供了一系列的接口,包括迭代,循環,和一些條件語句,甚至還包含了一個隊列系統。下面的例子可以表名兩種寫法的優劣
代碼如下:
#normal

first = (callback)->
console.log 'I am the first function'
callback()

second = (callback)->
console.log 'I am the second function'
callback()

third = ()->
console.log 'I am the third function'

first ->
second ->
third()

# use async

async = require('async')

async.waterfall [
first,
second,
third
], (err)->

作為睿智的你,會選擇哪一種呢。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScript中使用Callback控制流程介紹_javascript技巧

JavaScript中使用Callback控制流程介紹_javascript技巧:javascript中隨處可見的callback對于流程控制來說是一場災難,缺點顯而易見: 1.沒有顯式的return,容易產生多余流程,以及由此引發的bug。 2.造成代碼無限嵌套,難以閱讀。 下面就來說說怎么解決避免上述的問題。 第一個問題是一個習慣問題,在使用call
推薦度:
標簽: 使用 js javascript
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 国产精品视频大全 | www日韩| 日韩高清在线高清免费 | 毛片导航 | 国产伦精品一区二区三区免费下载 | 日韩成人在线电影 | 欧美日韩视频一区二区三区 | 欧美日韩亚洲高清不卡一区二区三区 | 国产精品专区第二 | 精品日韩欧美国产一区二区 | 国产色在线视频 | 毛片日韩| 欧美wwww | 久久久久免费精品国产小说 | 日本亲与子乱ay中文 | 国产精品自在欧美一区 | 久久国产精品久久久久久久久久 | 国偷自产一区二区免费视频 | 真人一级一级毛片免费观看 | 欧美电影一区二区 | 亚洲伊人国产 | 中文字幕另类 | 韩国精品在线观看 | 日本高清一二三 | 久久精品一区二区国产 | 久久精品一区二区 | 91精品啪国产在线观看免费牛牛 | 欧日韩一区二区三区 | 亚洲欧美日本另类激情 | 香蕉视频免费在线 | 国产成人免费高清激情明星 | 亚洲精品视频免费在线观看 | 欧美日韩国产另类一区二区三区 | 精品一区二区三区免费视频 | 亚洲一区 中文字幕 久久 | 69国产成人综合久久精品91 | 国产呦系列 欧美呦 日韩呦 | 国产精品视频免费视频 | 日韩成人精品在线 | 在线观看欧美国产 | 亚洲国产天堂久久九九九 |