e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调...
上一篇文章“e2e 自動化集成測試 架構 京東 商品搜索 實例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer數據庫的訪問”
下面講一下,對于在寫Node.js自動化測試腳本過程中,的編寫回調問題, 大家可能會發現, Node.js對于高并發處理的性能非常不錯, 即使是在使用單核的情況下, 那是因為它是基于事情,說白了就是callback, 回調。?
這樣的話,對于寫代碼的人來說, 回調的深度一深就會暈了。 為了解決這個問題, Q的出現解決了, 不知道怎么理解Q,說成反回調,可能會好一點。請參考?https://www.npmjs.org/package/q 文章寫的非常詳細。 在下說簡的解釋一下, 我們常用的方式 。
首先,需要安裝Q, ? 在cmd下運行npm install q就行了。
例子:
對于一個模塊js文件,如“myModule.js”, 內容如下:
/**
 * Created by Administrator on 10/22/2014.
 */
var Q = require('q');
var FS = require("fs");
var waitMeFirst = function()
{
 var deferrad = Q.defer();
FS.readFile('D:\\test.txt', "utf-8", function (error, content) {
 if (error) {
 deferrad.reject(error);
 }
 if (content == undefined || content == null || content == '') {
 deferrad.reject(new Error('文本內容為空'));
 }
 else
 {
 deferrad.resolve(content)
 }
 });
return deferrad.promise;
};
exports.WaitMeFirst = waitMeFirst;
?
解釋
上面的例子是一個讀取文件文本內容的例子。?
注意 waitMeFirst() 方法的返回是 “return deferrad.promise;” ?promise 是什么, 就是一種承諾, 告訴下面的步驟,“你要等我完成,不管我是成功還是失敗都要等我”, 在正常的使用過程, 一般是當讀出文件的內容后, 會對內容進行處理,如顯示在頁面上,或是修改內容, 所有一般的做法會是,使用Callback,傳到FS.readFile中, 讓FS去回調你的處理。 這樣做,代碼可讀性不高, 但性能高。 ?對于Q來說, 如何 使用呢, 如下:
?
var myModule = require("./myModule");
?
myModule.WaitMeFirst()
.then(function(result){
? ? ? ? ? ? ?console.log(result);
? ? ? ? ? ? ?client.setValue('select一個控件', result);
? ? ? ?}
? ? ? ?, function(err){
? ? ? ? ? ?console.log(err)
? ? ? ? })
如果deferrad執行了reject 表示失敗,沒會進行then的function(err)方法中, 如果deferrad執行了resolve那么then會進入function(result)中, 并且result將會是, resolver()的值。
轉載于:https://www.cnblogs.com/Stephending/p/4043949.html
總結
以上是生活随笔為你收集整理的e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 在Salesforce中调用外部系统所提
- 下一篇: linux如何显示根目录文件?
