標題看起來確實有些難懂。
由於本人在JS這塊程式設計不是很熟悉,所以我在做專案時候經常遇到這個問題,也困擾了我很久。
關於這個問題,我舉個例子吧。
專案中經常有很多地方都使用了同一段程式碼,為了方便,我喜歡就把它抽出來寫成一個函式,比如這個funA(),這個函式功能很簡單,就是取某些dom的值,進行加加減減操作,然後返回結果。
function funA(){
var i = document.getElementById(...).value;
var j = document.getElementById(...).value;
return i + j;
}
有了funA(),程式碼量減少了不少。直到有一天,老闆說這個函式要改改,不要去讀dom的值了,而是要從服務端拉取。
聽起來很簡單,但實際開發的時候我懵了。
這是因為:
funA()是同步的,什麼時候呼叫它,它就什麼時候返回對應的值。而新的funA()是非同步的,呼叫它之後,鬼知道什麼時候返回資料給我。
無數的程式碼呼叫了我的funA()函式,所有呼叫funA()的程式碼都認為這個函式能夠返回想要的數字,我可不想因為funA()去讀服務端,就得改無數個地方。
還有更多的類似funA()的函式面臨這種改動。即原本是同步的函式,某一天非得改成非同步的。
標題看起來確實有些難懂。
由於本人在JS這塊程式設計不是很熟悉,所以我在做專案時候經常遇到這個問題,也困擾了我很久。
關於這個問題,我舉個例子吧。
專案中經常有很多地方都使用了同一段程式碼,為了方便,我喜歡就把它抽出來寫成一個函式,比如這個funA(),這個函式功能很簡單,就是取某些dom的值,進行加加減減操作,然後返回結果。
function funA(){
var i = document.getElementById(...).value;
var j = document.getElementById(...).value;
return i + j;
}
有了funA(),程式碼量減少了不少。直到有一天,老闆說這個函式要改改,不要去讀dom的值了,而是要從服務端拉取。
聽起來很簡單,但實際開發的時候我懵了。
這是因為:
funA()是同步的,什麼時候呼叫它,它就什麼時候返回對應的值。而新的funA()是非同步的,呼叫它之後,鬼知道什麼時候返回資料給我。
無數的程式碼呼叫了我的funA()函式,所有呼叫funA()的程式碼都認為這個函式能夠返回想要的數字,我可不想因為funA()去讀服務端,就得改無數個地方。
還有更多的類似funA()的函式面臨這種改動。即原本是同步的函式,某一天非得改成非同步的。