`

解决js中 alert 单线程执行的问题

 
阅读更多

 问题描述

        前一段时间遇到问题,项目之间相互调用js。场景如下,系统A的界面点击“预览”按钮,调用系统B的js方法,并弹出系统B的预览界面,系统B的预览界面点击“提交”代码逻辑是1.调用系统A的submit方法 2.关闭自己的页面。那么问题来了,执行第1步的时候,因为系统A   submit方法里面异步调用成功之后,会使用alert弹出提示,而由于js的单线程执行,导致第2步就执行不到,就会出现,预览界面没有关闭,系统A的界面又弹出提示的情况(注:在浏览器使用选项卡打开的时候会出现这个问题

 

解决方案

       使用setTimeout 延时去调用系统A的submit的方法,这样在系统B的预览界面点击提交的时候,1和2步骤都能够执行到。但是要注意设置延时时间的长短,不可过长,过长会导致用户等待的时间长的问题,用户的体验度就会非常糟糕,过短会导致出现第2步没来得及执行的情况,在我的解决方案中100毫秒的时间刚刚(仅供参考)

 

 

例子

   html代码

 

<span id="test">测试</span>
 
   js代码    
$(function(){
  alertF();
  $("#test").css("color",'red');
})

function alertF() {
  alert(32);
  
}
 

 

    如何做到弹出的同时也改变字体的颜色,这个时候就可以使用setTimeout方法来解决,修改过后的js代码如下

    

$(function(){
  setTimeout("alertF()",100);
  $("#test").css("color",'red');
})

function alertF() {
  alert(32);
  
}

 

 

   

   

分享到:
评论

相关推荐

    理解javascript定时器中的单线程

    可以从下面的代码中看到,第一个用setTimeout中的代码是死循环,由于是单线程,下面的两个定时器就没机会执行了。 [removed] setTimeout( function(){ while(true){} } , 100); setTimeout( function(){ alert&#...

    alert中断settimeout计时功能

    并且只要是同一浏览器窗口内,即使在不同frame中,alert也会中断其他frame中的settimeout, 为什么这么设计,不明白,是因为javascript是单线程的吗? 这是在ie浏览器中的发现,其他对话框和弹出框我没有测试过。 ...

    JavaScript是否可实现多线程 深入理解JavaScript定时机制

    JavaScript的setTimeout与setInterval是两个很容易欺骗别人感情的方法,因为我们开始常常以为调用了就会按既定的方式执行, 我想不少人都深有同感, 例如 代码如下: setTimeout( function(){ alert&#40;‘你好!’&#41;;...

    再谈Javascript中的异步以及如何异步

     这段代码的意思是执行100…次后再执行alert,这样带来的问题是,严重堵塞了后面代码的执行,至于为什么,主要是因为JS是单线程的。 问题2:  我们通常要解决这样一个问题,如果我们需要在head里面加入script代码...

    JavaScript可否多线程? 深入理解JavaScript定时机制

    认为setTimeout中的问候方法会立即被执行,因为这并不是凭空而说,而是JavaScript API文档明确定义第二个参数意义为隔多少毫秒后,回调方法就会被执行. 这里设成0毫秒,理所当然就立即被执行了. 同理对setInterval的...

    jQuery事件用法详解

    JavaScript在浏览器中以单线程模式运行,页面加载后,一旦页面上所有的JavaScript代码被执行完后,就只能依赖触发事件来执行JavaScript代码。 我们可以用jQuery这样绑定一个click事件: /* HTML: * * 点我试试 *...

    设置setTimeout延时为0ms的作用

     这是事件循环机制,因为js是单线程的,是基于事件循环的。而setTimeout函数是异步的,异步的事件会加入一个队列,会等到当前同步的任务执行完毕后,再执行setTimeout队列的任务。所以,通过设置任务在延迟0毫秒后...

    深入理解JavaScript定时机制

    认为setTimeout中的问候方法会立即被执行,因为这并不是凭空而说,而是JavaScript API文档明确定义第二个参数意义为隔多少毫秒后,回调方法就会被执行. 这里设成0毫秒,理所当然就立即被执行了. 同理对setInterval的...

    KODExplorer 芒果云-资源管理器

    - 选中文件时,移动到屏幕可视区域(解决上下左右选中文件滚动条不一致问题) ###ver2.51 `2014/6/22` ---- ####fix bug:(bug解决和程序优化) - 登陆多次密码输入错误验证码bug解决 - 修复漏洞:创建副本加入...

    java面试宝典

    178、如何现实servlet的单线程模式 42 179、页面间对象传递的方法 42 180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话跟踪技术 42 182、Request对象的主要方法 43 183、我们在web...

    正则表达式

    JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. 在JavaScript中,正则表达式是由一个RegExp对象表示的.当然,可以使用一个RegExp()构造函数来创建RegExp...

    千方百计笔试题大全

    178、如何现实servlet的单线程模式 42 179、页面间对象传递的方法 42 180、JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 42 181、四种会话跟踪技术 42 182、Request对象的主要方法 43 183、我们在web...

    asp.net面试题

    答:SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息并执行远程过程调用的协议,是一个基于XML的协议。使用SOAP,不用考虑任何特定的传输协议(最常用的还是HTTP协议),...

Global site tag (gtag.js) - Google Analytics