码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2014-10-22 20:14:30      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   os   ar   使用   sp   文件   

  上一篇文章“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”, 内容如下:

bubuko.com,布布扣

/**
* 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 反回调

标签:style   blog   http   io   os   ar   使用   sp   文件   

原文地址:http://www.cnblogs.com/Stephending/p/4043949.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!