gpt4 book ai didi

javascript - 为什么javascript函数没有一个接一个地加载?

转载 作者:行者123 更新时间:2023-11-28 20:16:32 25 4
gpt4 key购买 nike

在我的html的开头我初始化变量“movieSRC”,如下所示:

<script type="text/javascript">

var activeStep = getUrlVars();
var movieSRC;

cloud.getStepsForModules(activeStep.module, "UMCK").then(function(steps) {

var calculatedStep = activeStep.step - 1;
movieSRC = steps.steps[calculatedStep].movie;

});

在我的html结尾,我有一些函数 videojs .

<script type="text/javascript">
_V_("movie").ready(function() {
var myPlayer = this;
myPlayer.src(movieSRC);
</script>
</html>

我不明白为什么 html 结尾部分会先加载,而一个在另一个在我的页面开头作为第二个。我需要它对面!我需要将 videojs 脚本保留在页面末尾,因为应该首先加载视频,然后加载脚本。

结论:myPlayer.src(movieSRC) 中的movieSRC 始终为空:(,但为什么呢?

最佳答案

正在按顺序执行。首先声明几个变量,然后执行一个函数,然后执行最后的部分。您忽略的是正在执行的函数是异步的。而且无论它运行得有多快,它极不可能在页面加载完成之前完成。

这是异步的:

cloud.getStepsForModules(activeStep.module, "UMCK")

所以在执行时其他所有内容都在加载。在它执行之后发生的任何事情都需要从它的 .then() 处理程序中调用:

cloud.getStepsForModules(activeStep.module, "UMCK").then(function(steps) {

var calculatedStep = activeStep.step - 1;
movieSRC = steps.steps[calculatedStep].movie;

// I don't know this plugin, but find your "myPlayer" here somehow
myPlayer.src(movieSRC);

});

或者也许这个顺序对于插件整体来说更有意义:

_V_("movie").ready(function() {
var myPlayer = this;

cloud.getStepsForModules(activeStep.module, "UMCK").then(function(steps) {
var calculatedStep = activeStep.step - 1;
movieSRC = steps.steps[calculatedStep].movie;
myPlayer.src(movieSRC);
});
});

关于javascript - 为什么javascript函数没有一个接一个地加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19113647/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com