2015-11-06 93 views
0

我知道有很多类似的问题,但我正在寻找关于特定场景的反馈。异步执行的Javascript顺序

比方说,我有一个页面,包含下面的代码:

<script> 
    var myCallback = function() { 
     // stuff... 
    } 
</script> 

<script async src="https://example.com/file.js?callback=myCallback"></script> 

<script> 
    var obj = { 
    render: function() { 
     this.funcA(); 
     this.funcB(); 
     this.funcC(); 
    }, 

    funcA: function() { 
     // stuff 
    }, 

    funcB: function() { 
     // stuff 
    }, 

    funcC: function() { 
     // stuff 
    } 
    } 

    obj.render(); 
</script> 

外部脚本设置在加载后打电话到“myCallBack函数”。

可能myCallback可以调用,而obj.render()正在执行,还是会一直等到render及其所有子功能被调用?

换句话说,有可能是myCallback某个时候在funcAfuncB执行之间的调用,funcC还是会一直等到他们都执行?

+0

学习事件循环的时间 – Lucius

+0

这就是我要求的。我认为尽快渲染被调用,那么它的所有子函数将被添加到事件循环中,因此当脚本返回时,myCallback将被放置在它们之后。是对的吗? – flyingL123

+0

在您发布的代码中,'myCallback'永远不会被调用 –

回答

0

您无法确定何时异步完成。最有可能在obj.render()之后,因为启动异步过程需要一段时间。 与此同时,处理obj.render的代码。 但取决于这样的代码流看起来像棘手的业务。 让我们假设异步代码由于被缓存而被立即加载 - 那么它可能会在代码运行之前或之后运行。