Node.js結合selenium做web自動化測試第六課

hello,小伙伴,歡迎來到今天的課堂筆記,無論此時的你是在座位上神游太虛還是在寫字樓外放飛自我,希望進到這里可以面帶微笑,看完今天的課程內容。(看就行了,微不微笑都無所謂)

本節課的主題是Node.js的promise語法

首先,在此對我們的技術指導趙老師表示熱烈且由衷的感謝,此處應該有掌聲,熱烈的掌聲

然后我們開始說promise這個語法什么作用呢,那得從盤古開天辟地說起,咳咳,跑偏了,拉回來,是從同步和異步的概念說起

何為同步,何為異步呢,我們說個段子,啊不,舉個栗子

東邊的山上有兩只猴,老猴子和小猴子,兩只猴子平時愛好吃桃子打農藥

編程中的同步:

老猴子對小猴子說,老子想玩農藥了。但是老子低血糖,必須先吃個桃子才能玩,要不會坑隊友。你去給我摘個桃,不吃完桃子我不打,然后小猴子去摘桃子去了,老猴子就坐在一直等,桃子不到,就不做其他事情,這個過程就是同步。

異步:?

經過每天吃桃,老猴子低血糖好了,不吃桃子也可以玩農藥,它對小猴子說,你去給我摘個桃,然后小猴子去摘桃子去了,老侯就坐在哪里開始玩農藥,一邊玩一直等著,玩完一局農藥可能還會吃雞。在等的過程中老猴子會做其他事情,這個就是異步出來。

說到這里,有點概念了嗎,異步就是在同一時間可以做多件事情,正如我們的程序里面,一段代碼執行的同時,另外一段可能也在執行,Node.js語言就具備這個異步的特性,但是這個特性有時候會帶來一些困擾,比如某段程序在執行過程耗時較長,那么整體的程序輸出結果可能會導致順序打亂

比如上面這個例子中,我們假設小猴子摘桃動作5s,老猴子吃桃需要3s,?根據我們使用其它編程語言的習慣 在老猴有低血糖又癡迷農藥游戲的那段時光。我們以往的經驗: 來這樣編程

但是你會發現,這段程序的輸出結果是這樣的,桃子還沒吃,就開始打農藥,結果肯定是老猴子秒變豬隊友,各種被噴,這個結果就是Node.js的異步特性導致的

在老猴子低血糖的情況下,又要滿足它想打農藥的需求,怎么辦呢?這就要引出回調函數的概念了,回調又是啥?你可以這樣理解,在方法里面再寫入一個方法,回調這個函數

看到=>這里大家不要方,它的用法跟function()是一樣一樣的,就是帶入一個方法,這一段里面就是方法里面再寫入一個方法,我們所說的回調

看一下打印結果,就是按照我們想要的順序排列的,6不6

但是,按照這種方法去寫的話,假設老猴子在此期間有其他的一件或者多件事情要做,那么都這樣寫進一個方法里,會灰常不方便而且也很混亂,那么我們可以這樣寫,callback回調,這樣回調多個方法的時候不會把自己繞亂,是不是更6了一點

雖然更6了一點,但是回調函數也有缺點,就是不利于代碼的閱讀和維護,各個部分之間高度耦合(Coupling),流程會很混亂,而且每個任務只能指定一個回調函數,接下來終于要引出我們開場說的promsise了,原諒我兜了這么大一圈

我們先把四個方法定義好,這里,promise后面的resolve和reject是兩個函數,里面的方法如果成功傳值resolve,失敗就傳reject返回error,這里面對于reject的情況我們就不多舉例了,主要看promise的作用,我們看到四個方法里都是返回resolve的值打印相應的信息,這個return,新來的吧,面生啊,它的意義在于,取到了要打印的結果,返回給前面的方法,就像是接力賽跑,第一段里,確定了拿到要打印的信息“老猴低血糖,要先補充個桃子才能農藥”,return就是告訴willGame,接力棒來了,繼續下面的操作,遞給getPeach方法接上吧,以此類推。

不過到這程序可還沒完啊,看到這里不要撒歡跑路了,接下來就是通過then來控制,上面的四種方法各自拿到要打印的信息了,接下來的then,讓它們按順序打印出各自的結果,這里結果圖不再發了,肯定跟之前一樣的,I promise

問題又來了

我們是誰? ? ? ? ? ? ? ? ? 測試!

我們要干嘛? ? ? ? ? ? ? 寫自動化測試代碼!

重要的是什么? ? ? ? ? ?會寫代碼!

比會寫代碼更重要的是什么? ? 會寫優雅的代碼!

上面一大坨解決了我們會寫代碼的痛點,但是如果寫的東西多了,它還是不夠優雅,如何優雅的寫代碼呢?敬請期待下一節課:終極大招,async/await

騰訊課堂

https://ke.qq.com/course/281565#tuin=173f40be,周一至周五晚上8:00,準時等你

測試工具CukeTest下載地址http://www.cuketest.com/

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容