zoukankan      html  css  js  c++  java
  • 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()的值。

  • 相关阅读:
    Java后端工程师的学习技术栈
    ltp 分析 fail testcase
    程序员这个职业需要具备的素养
    你真的愿意到了50岁还要做编程吗?
    程序员的学习和积累
    程序员写博客的缘由
    VS2010生成文件
    从菜鸟到专家的五步编程语言学习法
    程序设计的18大原则
    怎样的代码才算是干净的代码?
  • 原文地址:https://www.cnblogs.com/Stephending/p/4043949.html
Copyright © 2011-2022 走看看