如何在执行下一行之前等待执行完成
How to wait for an execution to finish before doing next line
标题说明了一切。我已经找到了一些答案(关于回调和其他一些),但我不知道如何将其应用于我的代码。
问题:如何在执行下一行之前等待$( "#layout-grid" ).load(layout);
完成?
最后一行的警报不会在第一次执行时显示,因为$( "#layout-grid" ).load(layout);
尚未完成加载。但是,警报在第二次执行时正确显示。
function setLayout(selectedLayout) {
layout += selectedLayout;
$( "#layout-grid" ).load(layout); // this load is not finished yet before alert
var top_level_div = document.getElementById('layout');
var count = top_level_div.getElementsByTagName('div').length;
alert(count);
}
您可以将第二个参数传递给.load()
调用,这是一个回调,在调用完成后会触发。请参阅此处:
function setLayout(selectedLayout) {
layout += selectedLayout;
$( "#layout-grid" ).load(layout, function(){
var top_level_div = document.getElementById('layout');
var count = top_level_div.getElementsByTagName('div').length;
alert(count);
});
}
希望这能有所帮助。
$.load()
采用可选的回调参数。您必须将加载完成后需要执行的代码放在函数中,并将该函数传递给$.load
。
你的例子是这样的:
function setLayout(selectedLayout) {
layout += selectedLayout;
$( "#layout-grid" ).load(layout, function afterLoad() {
var top_level_div = document.getElementById('layout');
var count = top_level_div.getElementsByTagName('div').length;
alert(count);
});
}
不幸的是,在Javascript中没有办法将异步请求转换为同步请求,因为出于一些我不清楚的原因,我们决定在Javascript中将不可能嵌套事件循环。
例如,在Javascript中编写alert(msg)
这样的东西是不可能的,因为这种限制是故意设置的。
"解决方法"是使用回调。。。也就是说,你不需要等待,而是需要告诉(在另一个函数中)你等待的事件何时发生,是否会发生。
StratifiedJs允许"等待"异步事件,隐藏了基于回调的控制流的复杂性,除非你真的想要它,但它是一个接受Javascript超集作为输入并生成Javascript的编译器。
您必须在jquery中使用回调函数来获取示例,您的代码必须像这样编写
function setLayout(selectedLayout) {
layout += selectedLayout;
$( "#layout-grid" ).load(layout,function(){
var top_level_div = document.getElementById('layout');
var count = top_level_div.getElementsByTagName('div').length;
alert(count);
});
有关详细信息,请阅读此链接
祝好运
相关文章:
- 使用 JavaScript 执行一行 PHP(不包括 PHP 文件)
- 怪异的JS行为:执行函数需要额外的一行
- 在 Ajax 提交之前执行一行 PHP
- 我想单击一个按钮,一次只执行已经制作的程序中的一行代码.(JavaScript)
- Javascript - 异步函数完成后下一行如何等待执行
- 如何在 C# 中执行下一行之前显示警报弹出窗口 asp.net
- 如何在执行下一行之前等待执行完成
- 默认情况下,在启动时执行条件AND中的一行
- 如何在一行中执行多个操作
- JQuery在执行下一行代码之前等待几秒钟
- 如何在执行下一行代码之前等待主干事件触发器完成
- 如何对每一行文本执行Marquee stop Delay
- 如何等待按钮生成,然后执行下一行代码
- 如何在javascript中强制执行一行,然后再转到下一行
- Javascript在执行下一行之前不会等待STRIPE.COM函数完成
- 如何知道在nightwatch.js到那一行已经执行
- 如何仅在第一行代码执行之后执行下一行代码
- 输出每一行被执行的javascript代码和/或一步一步地执行代码,无论在什么"进程",计时器等代码
- 在ASP中对异步ajax事件执行一行javascript.NET
- 在启动Firebug控制台之前自动执行一行javascript