我在onView(withId(R.id.edToNumber)).perform(typeText("MDO158");
onView(withId(R.id.edToNumber)).perform(closeSoftKeyboard());
中有一个a()
和一个b()
。我无法对a()
进行任何更改,但希望使其无法从外部拨打。
因此,我想到了保存b()
的引用,然后将其设置为b()
的想法。但是,它不起作用。
对我有什么提示吗?
null
答案 0 :(得分:1)
这是一种方法:将函数包含在自执行的匿名函数中。这很有用,因此您可以缓存一个标志,该标志确定b()
是否应运行。然后将静态方法添加到a()
中以切换此内部标志。 runB
下面的示例就是这样的标志。请注意,不会引发任何错误,但是您可以根据需要触发错误。
(function(parent){
var runB = true;
function b(){
console.log('Executed b()');
}
function a(){
setTimeout(function(){
if(runB) {
b();
} else {
console.log('Skipped b()')
}
}, 500);
console.log('Executed a()');
}
a.disableB = function(){
runB = false;
}
parent.a = a;
})(window);
// Run it normally
a();
// Run it without b()
setTimeout(function(){
a();
a.disableB();
}, 550);
答案 1 :(得分:0)
我不知道这是否是一个好习惯,但是您可以将window.bref
包装在另一个函数中。因此,我在这里检查window.bref
是否是一个函数,如果是,则调用它,或者什么也不做。此输出不再调用b()
。
function a(){
setTimeout(() => {
typeof window.bref === 'function' ? window.bref() : null;
}, 1000);
function b(){
console.log('called');
}
window.bref = b;
console.log('finish setting');
}
a();
window.bref = null;
console.log('make b() fail to call')
答案 2 :(得分:0)
尝试使用let:
function a(){
let b = function(){
console.log('called');
alert('b called');
}
setTimeout(b, 1000);
console.log('finish setting');
}
a();
try{b();}
catch(e){console.log("b is not called")}