告诉javascript停止执行代码并在函数中间执行背景操作
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了告诉javascript停止执行代码并在函数中间执行背景操作,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1173字,纯文字阅读大概需要2分钟。
内容图文
![告诉javascript停止执行代码并在函数中间执行背景操作](/upload/InfoBanner/zyjiaocheng/799/96030ad06af549e38df268484b63efa9.jpg)
对标题感到抱歉,但无法提供任何真实的信息和简洁.
我的情况是我正在启动一个setTimeout,我希望它能够在JS函数的中间运行(它用于解决将GM函数注入网页的问题).
unsafeWindow.testG = function(key, dValue){
var rValue;
setTimeout(function(){rValue = GM_getValue(key, dValue);}, 0);
alert(rValue);
alert(rValue);
return(rValue);
}
在三个测试中,rValue仍未定义(这是有道理的,因为JS在大多数情况下是单线程的).
所以我有两个我想到的解决方案.
喜爱:
反正有没有告诉JS在函数中间睡觉并处理背景内容(如Timeouts)?
其他:
有谁知道何时会调用此超时?也许在这个函数执行之后,但在调用之前它再次启动?
在这种情况下,使rValue全局可以解决问题(但编码稍微麻烦).
或者它会等到所有JS完成执行?
在这种情况下,我可能需要另一个setTimeout来处理结果.
解决方法:
你所要求的是无法实现的.在HTML5是一个广泛传播的标准之前,如果不异步思考,就无法做到你所要求的.
例如 :
unsafeWindow.testG = function(key, dValue, callback){
var rValue;
setTimeout(function(){
rValue = GM_getValue(key, dValue);
callback(rValue);
}, 0);
}
并使用回调调用此方法:
unsafewindow.testG(key, dValue, function(rValue) {
alert(rValue);
});
alert("foo");
对于最后一个sippet,“foo”将在rValue之前回显,因为testG仅在Javascript线程可用时执行超时功能,或者仅在没有其他脚本运行时执行.
内容总结
以上是互联网集市为您收集整理的告诉javascript停止执行代码并在函数中间执行背景操作全部内容,希望文章能够帮你解决告诉javascript停止执行代码并在函数中间执行背景操作所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。