繁体   English   中英

等待JavaScript函数完成后再继续

[英]Wait for JavaScript function to finish before proceed

这可能不是一个复杂的问题,但是我不确定我是否在正确的轨道上。

我的目标是首先运行JavaScript函数,并在执行完全完成时(这可能需要花费几秒钟,但并非总是如此),然后关闭窗口。

功能和关闭仅通过一个按钮即可触发:

<button id="myID">Click me</button>

JavaScript是:

<script type="text/javascript">
    function someFunction() {
        // do some stuff
    }

    document.getElementById('myID').addEventListener("click", function(){
        someFunction();
        window.close();
    });
</script>

这可以正常工作,但是如果这不是一种可靠的方法,可以让任何人提供一些建议吗? 重要的是,在触发window.close()之前,必须完全完成该函数的执行。

您可以将window.close()放在alert(); 但是,如果您想添加更多异步内容,则需要这样的回调函数。

<script type="text/javascript">
    var closeWindow = function() {
        window.close();
    };

    function someFunction(callback) {
        alert('hi');
        callback();
    }

    document.getElementById('myID').addEventListener("click", function(){
        someFunction(closeWindow);
    });
</script>

同步javascript将始终以自上而下的顺序运行,并且始终保证第一条指令将在第二条指令之前完成。

但是,还有一个异步部分(您在这里没有它,但是例如ajax请求通常是异步的),该部分以不同的方式执行,并且需要回调 / promises

您的选择是:

  1. window.close(); 在回调函数中
  2. 使用promises可以控制回调执行,如果有错误,您可以更好地处理它,而不关闭窗口/

页面加载后,someFunction()执行一些DOM操作

多数民众赞成在同步(浏览器可能会推迟渲染,但这里谈论的是毫秒),因此可以保证在函数返回之前完成DOM操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM