我有一个共同的验证功能
function connect_and_update_destination() {
var flag = true;
// Validate IP
if (!validate_ip_address()) {
alert(protect.lang.enter_valid_ip);
return;
}
if ($('#pjm_alias').val() === '') {
$('#pjm_alias').focus();
alert(protect.lang.enter_alias);
return;
}
if ($('#pjm_auth_name').val() === '') {
$('#pjm_auth_name').focus();
alert(protect.lang.enter_auth_name);
return;
}
if ($('#pjm_auth_password').val() === '') {
$('#pjm_auth_password').focus();
alert(protect.lang.enter_auth_pwd);
return;
}
var ip = $('#pjm_ip1').val()+'.'+$('#pjm_ip2').val()+'.'+$('#pjm_ip3').val()+'.'+$('#pjm_ip4').val();
return establish_connection(ip, $('#pjm_alias').val(), $('#pjm_auth_name').val(), $('#pjm_auth_password').val());
}
成功验证后,它总是返回 establish_connection(),我的问题是我这样称呼 connect_and_update_destination(),
function first_call(){
connect_and_update_destination();
}
function second_call(){
connect_and_update_destination();
}
第一次调用后我需要在成功验证 establish_connection()后返回,但是当我使用第二个函数[second_call()]调用它时,它不应该返回 establish_connection()返回 establish_connection()我只需要返回。但我怎么能这样做,意味着当我使用 second_call()调用时,我不想进入establish_connection()。
提前致谢。
答案 0 :(得分:1)
您可以向connect_and_update_destination
函数添加参数:
function connect_and_update_destination(establishConnection) {
var flag = true;
// Validate IP
if (!validate_ip_address()) {
alert(protect.lang.enter_valid_ip);
return;
}
if ($('#pjm_alias').val() === '') {
$('#pjm_alias').focus();
alert(protect.lang.enter_alias);
return;
}
if ($('#pjm_auth_name').val() === '') {
$('#pjm_auth_name').focus();
alert(protect.lang.enter_auth_name);
return;
}
if ($('#pjm_auth_password').val() === '') {
$('#pjm_auth_password').focus();
alert(protect.lang.enter_auth_pwd);
return;
}
if (!establishConnection) {
return;
}
var ip = $('#pjm_ip1').val()+'.'+$('#pjm_ip2').val()+'.'+$('#pjm_ip3').val()+'.'+$('#pjm_ip4').val();
return establish_connection(ip, $('#pjm_alias').val(), $('#pjm_auth_name').val(), $('#pjm_auth_password').val());
}
然后:
function first_call() {
connect_and_update_destination(true);
}
function second_call() {
connect_and_update_destination(false);
}
答案 1 :(得分:1)
你可以做一些像传递变量一样简单的事情。
function connect_and_update_destination(establishConnection) {
...
if(!establishConnection)
return;
return establish_connection(ip, $('#pjm_alias').val(), $('#pjm_auth_name').val(), $('#pjm_auth_password').val());
}
function first_call(){
connect_and_update_destination(true);
}
function second_call(){
connect_and_update_destination(false);
}
对于更通用的解决方案,您可以传递回调:
function connect_and_update_destination(callback) {
...
if(typeof callback === 'function') {
return callback(ip);
}
return;
}
function first_call() {
var result = connect_and_update_destination(function(ip) {
return establish_connection(ip, $('#pjm_alias').val(), $('#pjm_auth_name').val(), $('#pjm_auth_password').val());
});
}
function second_call() {
connect_and_update_destination();
}