日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调...

發(fā)布時間:2023/12/2 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

  下面講一下,對于在寫Node.js自動化測試腳本過程中,的編寫回調(diào)問題, 大家可能會發(fā)現(xiàn), Node.js對于高并發(fā)處理的性能非常不錯, 即使是在使用單核的情況下, 那是因?yàn)樗腔谑虑?#xff0c;說白了就是callback, 回調(diào)。?

這樣的話,對于寫代碼的人來說, 回調(diào)的深度一深就會暈了。 為了解決這個問題, Q的出現(xiàn)解決了, 不知道怎么理解Q,說成反回調(diào),可能會好一點(diǎn)。請參考?https://www.npmjs.org/package/q 文章寫的非常詳細(xì)。 在下說簡的解釋一下, 我們常用的方式 。

首先,需要安裝Q, ? 在cmd下運(yùn)行npm install q就行了。

例子:

對于一個模塊js文件,如“myModule.js”, 內(nèi)容如下:

/**
* 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('文本內(nèi)容為空'));
}
else
{
deferrad.resolve(content)
}
});

return deferrad.promise;

};

exports.WaitMeFirst = waitMeFirst;

?

解釋

上面的例子是一個讀取文件文本內(nèi)容的例子。?

注意 waitMeFirst() 方法的返回是 “return deferrad.promise;” ?promise 是什么, 就是一種承諾, 告訴下面的步驟,“你要等我完成,不管我是成功還是失敗都要等我”, 在正常的使用過程, 一般是當(dāng)讀出文件的內(nèi)容后, 會對內(nèi)容進(jìn)行處理,如顯示在頁面上,或是修改內(nèi)容, 所有一般的做法會是,使用Callback,傳到FS.readFile中, 讓FS去回調(diào)你的處理。 這樣做,代碼可讀性不高, 但性能高。 ?對于Q來說, 如何 使用呢, 如下:

?

var myModule = require("./myModule");

?

myModule.WaitMeFirst()

  .then(function(result){

? ? ? ? ? ? ?console.log(result);

? ? ? ? ? ? ?client.setValue('select一個控件', result);

? ? ? ?}

? ? ? ?, function(err){

? ? ? ? ? ?console.log(err)

? ? ? ? })

如果deferrad執(zhí)行了reject 表示失敗,沒會進(jìn)行then的function(err)方法中, 如果deferrad執(zhí)行了resolve那么then會進(jìn)入function(result)中, 并且result將會是, resolver()的值。

轉(zhuǎn)載于:https://www.cnblogs.com/Stephending/p/4043949.html

總結(jié)

以上是生活随笔為你收集整理的e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (四) Q 反回调...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。