我对“;返回true"嵌套函数内部;t工作
My solutions to "return true;" inside a nested function aren't working
我发布了一个被标记为重复的问题,因为这让我对在嵌套函数中发布return true;
进行了一些研究。我现在了解了异步代码,但在编写解决方案时仍然有很大的困难。
最初导致我出现问题的代码是:
if($('input[name="lat"]').length){
// submit the form after checks have been made
return true;
} else {
e.preventDefault();
geocode_clientside();
setTimeout(function () {
return true;
}, 1000); // in milliseconds
}
经过大量阅读,我得到了这个:
var result = false;
if($('input[name="lat"]').length){
// submit the form after checks have been made
result = true;
} else {
e.preventDefault();
geocode_clientside();
setTimeout(function () {
result = true;
// console log just to help me with debugging
console.log('settimeout: ' + result);
}, 1000); // in milliseconds
}
// console log just to help me with debugging
console.log('end: ' + result);
return result;
这显然不起作用,因为当输入[name="lat"]没有长度时,return result;
返回"false"。当我编写新的解决方案时,我才明白这一点,感觉就像我绕了一大圈,回到了问题的开始。我现在完全理解为什么它会返回false,我不明白的是,解决方案会让我走到最后(而不是回到开始)。
我尝试了一些愚蠢的方法,那就是包装返回结果;在延迟函数中,这是一场灾难。
有人能帮我吗?
由于要进行表单提交,因此可以直接调用表单元素的submit方法。
因此,在else
块中,您将阻止默认的表单提交,这将阻止单击时的表单提交。然后在计时器中,如果你想提交表单,你可以调用submit()方法(它不会调用提交处理程序)
$('form').submit(function () {
var form = this;
if ($('input[name="lat"]').length) {
// submit the form after checks have been made
return true;
} else {
e.preventDefault();
geocode_clientside();
setTimeout(function () {
form.submit();
}, 1000); // in milliseconds
}
})
注意:根据您的评论,您使用的是地理定位api,因此不要依赖于超时来猜测何时完成,而是使用回调方法提交表单
相关文章:
- 调用函数内部的函数
- javascript函数内部的代码用逗号而不是分号分隔
- javascript无法重新定义函数内部的全局对象
- 如何从函数内部的这个变量中获取值
- appendChild在函数外部工作,但在函数内部不工作
- 在jquery函数内部设置来自jquery函数的var;t运行
- 一个'var'在函数内部声明
- 为什么(如何)'这'从函数内部调用回调时发生更改
- 函数内部未定义的输入值
- 在Meteor中如何将数据从函数内部复制到其他模板
- 如果在构造函数内部为else,则Javascript是可选的
- 我对“;返回true"嵌套函数内部;t工作
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- javascript,将参数传递给函数内部的闭包中的回调
- 匿名自执行js函数内部的全局变量在外部仍然可用
- 使用PHP和Javascript在函数内部传递alphaneumeric值作为参数时出错
- 访问函数内部的Polymer方法
- 更改函数内部的全局变量而不调用它
- 如何在函数内部为jquery工具提示调用不同的var字符串
- 构造函数内部的事件处理