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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值