js中alert方法:
如果代码:
alert(1);
alert(2);
执行到1时,会弹出一个1的对话框,后台js代码就停留在alert(1)这里,要点击确定后,才会弹出2的对话框。
我现在想实现自己的方法:
alertMe(1);
alertMe(2);
我重写后,发现这个同步问题不好解决。当我执行时,代码会连续弹出1和2.我想达到js自带的alert方法暂定的效果。
在出现1后,没有点击确定,就不运行alertMe(2);有什么方法没?
请高手指点在线等待

解决方案 »

  1.   

    因为JS是非阻塞模式的,所以解决办法只能是在第一个alertMe关闭后再执行第二个alertMe
      

  2.   

    请问,你知道js内置方法alert()内置阻塞是怎么样实现的。
    在弹出第一个alert,js会阻塞。
    这又是怎么实现的。有什么方法实现?
      

  3.   

    回调函数,当第一个alert有操作之后,再执行第二个alert
      

  4.   

    window.alert 阻塞,是浏览器决定的
    比如chrome,如果发现连续多次alert,可以让用户直接禁到alert对话框
    js本身是没有阻塞的
    如#4所说的一样,可以通过回调实现,这样你的alertMe应该有类似的参数:
    alertMe("message",closeHandle);其中的closeHandle就是关闭alertMe弹出对话框后将被调用的函数
    具体怎么实现自己琢磨吧
      

  5.   

    听了大家的解释,受益匪浅。非常感谢。
    我在考虑:
    如果用回调函数。
    我执行我自己重新的alertMe方法。这里是是只有两个。
    但是三个alertMe。四个,五个,更多就不能达到效果。
    怎不能五个就,嵌套五层吧。
    我现在就纳闷,js自带的alert方法怎么样做到阻塞的。
    有谁能实现原理,能指点下吗?
      

  6.   

    只是提供另外一种思路。将对话框的实现单例,如果第二次调用时发现当前对话框显示,添加到一个队列中。当确定按钮点击时,从队列中取一个元素,执行显示。但是这种方法只会阻塞alert的执行,而不会阻塞其他操作的执行。