上一篇文章“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()的值。

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

  1. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (六) 自动化测试结构小节

    上一篇‘e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (五) 如何让窗体记录登录 ...

  2. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问

    上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别” ...

  3. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (二) 图片验证码的识别

    上一篇文章讲了“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 一 京东 商品搜索 ...

  4. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (一) 京东 商品搜索

    之前有发布一篇文章“e2e 自动化集成测试 环境搭建 Node.js Selenium WebDriverIO Mocha Node-Inspector”, 主要是讲了,如何搭建环境, 其中开发环境使 ...

  5. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (五) 如何让窗体记录登录状态Session

    在写自动化测试的Node.js脚本时, 时常需要测试所写的case, 可能都需要去重新登录一遍,这将相当的耗时, 好在Selenium都借了Session的机制, 如果在最初的浏览器没有关闭的情况下, ...

  6. e2e 自动化集成测试 环境搭建 Node.js Selenium WebDriverIO Mocha Node-Inspector

    Node.js已经出来了许多年载,至今才开始接触.周未在家闲来无事,一时心血来潮,Google了大量的文章,经过实验,终于可以把整个环境给搭起来, 废话不多话,请看步骤. 特别注意, 本文章是针对Wi ...

  7. 前端自动化之路之gulp,node.js

    随着现在前端技术的不断发展,和各个公司对前端项目开发更新速度的要求,前端自动化越来越受到大家的重视,之前传统的前端开发方式已经越来越不能满足开发的需求了,于是各种自动化工具随之产生了.而gulp就是其 ...

  8. 【nodejs笔记1】配置webstorm + node.js +express + mongodb开发博客的环境

    1. 安装webstorm 并破解 2. 安装node (以及express框架) 至官网下载并安装.(http://nodejs.org)v0.10.32   msi  安装后测试,打开命令行, c ...

  9. WebStorm+Node.js开发环境的配置

    1 下载地址:  webstorm:http://www.jetbrains.com/webstorm node.js:https://nodejs.org/download/ 2 安装node.js ...

随机推荐

  1. struts2与velocity的整合有两种方式

    1.以struts2为主.struts2内置了对velocity的支持,只要在<result name="success"?type="velocity" ...

  2. 1191: [HNOI2006]超级英雄Hero - BZOJ

    Description 现在电视台有一种节目叫做超级英雄,大概的流程就是每位选手到台上回答主持人的几个问题,然后根据回答问题的多少获得不同数目的奖品或奖金.主持人问题准备了若干道题目,只有当选手正确回 ...

  3. 关于jsp页面是放在webroot目录下和web-inf下优缺点

    CSDN问题: jsp放在webroot目录下 这样就可以让用户直接访问,jsp放在web-inf目录下就必须要通过请求才能访问.因此放在web-inf下jsp页面显得要安全. 既然这样 ,那是不是只 ...

  4. IText 生成简单表格(报表)doc文档 单元居中

    IText生成doc文档需要三个包:iTextAsian.jar,iText-rtf-2.1.4.jar,iText-2.1.4.jar 亲测无误,代码如下所示: import com.lowagie ...

  5. 【零基础学习iOS开发】【02-C语言】10-函数

    前面已经讲完了C语言中的基本语句和基本运算了,这讲呢,介绍C语言中的重头戏---函数.其实函数这个概念,在大部分高级语言中都是非常重要的,我也已经在<第一个C语言程序>一讲中对函数作了一个 ...

  6. Git教程之标签管理

    发布一个版本时,我们通常先在版本库中打一个标签,这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库的一个快照.Git的 ...

  7. 启用了不安全的HTTP方法

    安全风险:       可能会在Web 服务器上上载.修改或删除Web 页面.脚本和文件. 可能原因:       Web 服务器或应用程序服务器是以不安全的方式配置的. 修订建议:       如果 ...

  8. Android隐藏输入法键盘(hideSoftInputFromInputMethod没有效果)

    在个别时候,需要强制隐藏Android输入法键盘,如当前键盘正在显示,这个时候点击了侧滑面板,就要强制隐藏输入法键盘.网上常见的方法有: 1. InputMethodManager imm = (In ...

  9. Android 设置EditText光标位置

    Android中有很多可编辑的弹出框,其中有些是让我们来修改其中的字符,这时光标位置定位在哪里呢? 刚刚解了一个bug是关于这个光标的位置的,似乎Android原生中这种情况是把光标定位到字符串的最前 ...

  10. P163、面试题29:数组中出现次数超过一半的数字

    题目:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}.由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2. 思 ...