2015-11-06 3 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 называться когда-то между исполнением funcA, funcB и funcC или не будет всегда ждать, пока после того, как все они выполнены?

+0

время, чтобы узнать цикл событий – Lucius

+0

Вот что я прошу. Я думаю, что, как только вызывается рендер, все его вспомогательные функции будут добавлены в цикл событий, и поэтому myCallback будет размещен после них, когда скрипт вернется. Это правильно? – flyingL123

+0

в коде, который вы отправили, 'myCallback' никогда не будет вызван вообще –

ответ

0

вы не можете сказать, когда асинхронная установка завершена. Скорее всего, после obj.render(), потому что требуется некоторое время, чтобы инициировать процесс asynchrone. В то же время обрабатывается код для obj.render. Но в зависимости от такого потока кода кажется сложным делом. Предположим, что асинхронный код загружается мгновенно, поскольку он кэшируется - тогда он может запускаться до или во время выполнения других частей вашего кода.

Смежные вопросы