将参数传递给回调函数而不更改方法(Siesta Testing命名空间)

时间:2013-11-30 19:43:22

标签: javascript callback integration-testing siesta

有谁知道如何将参数传递给你无法改变的回调函数?

所以这是我正在尝试实现的代码(这是一个午睡测试方法):

Base.js:

waitForComponentQueryVisible: function (parentNext, parameters) {

    var th = this,
    query = parameters.query,
    scope = th,
    callback = callFunct,
    timeout = 10000;
//The function inside here (returnToParentTester(parentNext, parameters)) is from Base.js 
    callFunct = function () {
        scope.returnToParentTester(parentNext);
    }
    this.test.waitForComponentQueryVisible(query, callback, scope, timeout);
},

这里的问题分为两部分: 1.我无法使范围恰到好处,因此我可以使用Base.js中的returnToParentTester方法。 2.我想将parentNext传递给方法,但在将其定义为回调时不能这样做

这是我需要作为回调运行的方法:

Base.js:

returnToParentTester: function (parentNext, parameters) {
    debugger;
    if (parentNext) {
        parentNext.call(undefined, parameters);
    } else {
        this.test.fail('--Developer Error-- undefined parentNext ' +
                       'variable. All the chains are going to fail');
    }
},

1 个答案:

答案 0 :(得分:0)

  

我无法使范围恰到好处所以我可以使用Base.js中的returnToParentTester方法

使用call方法更改范围:

Base.returnToParentTester.call(myScope)
  

我想将parentNext传递给方法但在将其定义为回调时不能这样做

使用匿名函数作为回调并在其范围内传递参数:

$("body").click(function(e){foo(e.target,bar,baz)})

然后让它完成工作:

function foo(myScope, next1, param1)
 {
 Base.returnToParentTester.call(myScope, next1, param1)
 }

<强>参考