e2e 自動化集成測試 架構 實例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回調

  上一篇文章「e2e 自動化集成測試 架構 京東 商品搜索 實例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer數據庫的訪問html

  下面講一下,對於在寫Node.js自動化測試腳本過程當中,的編寫回調問題, 你們可能會發現, Node.js對於高併發處理的性能很是不錯, 即便是在使用單核的狀況下, 那是由於它是基於事情,說白了就是callback, 回調。 數據庫

這樣的話,對於寫代碼的人來講, 回調的深度一深就會暈了。 爲了解決這個問題, Q的出現解決了, 不知道怎麼理解Q,說成反回調,可能會好一點。請參考 https://www.npmjs.org/package/q 文章寫的很是詳細。 在下說簡的解釋一下, 咱們經常使用的方式 。npm

首先,須要安裝Q,   在cmd下運行npm install q就好了。promise

例子:架構

對於一個模塊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();post

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()的值。

相關文章
相關標籤/搜索