Javascript执行顺序和回调
我知道以下代码:Javascript执行顺序和回调,javascript,Javascript,我知道以下代码: function do_a(){ // simulate a time consuming function setTimeout( function(){ console.log( '`do_a`: this takes longer than `do_b`' ); }, 1000 ); } function do_b(){ console.log( '`do_b`: this is supposed to come out after `do_a`
function do_a(){
// simulate a time consuming function
setTimeout( function(){
console.log( '`do_a`: this takes longer than `do_b`' );
}, 1000 );
}
function do_b(){
console.log( '`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`' );
}
do_a();
do_b();
导致
`do_b`: this is supposed to come out after `do_a` but it comes out before `do_a`
`do_a`: this takes longer than `do_b`
首先,我想了解为什么javascript决定“继续前进”并首先执行更快的代码
第二,为什么这不能解决问题?例如,为什么警报在for循环完成之前发生
function doit(start,callback) {
for (i = 0; i < 100000; i++) {
document.getElementById('edit-cut').innerHTML = "<div></div>";
}
callback(start);
}
var start = Date.now();
doit(start,function(start){
var end = Date.now();
alert(end-start);
});
函数doit(启动、回调){
对于(i=0;i<100000;i++){
document.getElementById('edit-cut')。innerHTML=“”;
}
回调(启动);
}
var start=Date.now();
doit(启动,功能(启动){
var end=Date.now();
警报(结束-开始);
});
谢谢。setTimeout()
在指定时间后调用该函数。实际上,JS继续执行b,并在指定的时间后执行匿名函数。第一个方法不模拟耗时的函数。相反,它将intepreter配置为在1000毫秒后调用匿名函数(与其他代码异步)。setTimeout()
在指定时间后调用该函数。实际上,JS继续执行b,并在指定的时间后执行匿名函数。第一个方法不模拟耗时的函数。相反,它将intepreter配置为在1000毫秒后调用匿名函数(与其他代码异步)。setTimeout()
在指定时间后调用该函数。实际上,JS继续执行b,并在指定的时间后执行匿名函数。第一个方法不模拟耗时的函数。相反,它将intepreter配置为在1000毫秒后调用匿名函数(与其他代码异步)。setTimeout()
在指定时间后调用该函数。实际上,JS继续执行b,并在指定的时间后执行匿名函数。第一个方法不模拟耗时的函数。相反,它将intepreter配置为在1000毫秒后调用匿名函数(与其他代码异步)
首先,我想了解为什么javascript决定“继续前进”并首先执行更快的代码
它不会先执行“更快”的代码。它按照命令的顺序执行代码
你跑得快。你跑吧。JS事件循环查找要运行的下一个函数。没有。一秒钟过后,超时结束,传递给它的函数被放入队列中运行。事件循环运行该函数
为什么警报会在for循环完成之前发生
function doit(start,callback) {
for (i = 0; i < 100000; i++) {
document.getElementById('edit-cut').innerHTML = "<div></div>";
}
callback(start);
}
var start = Date.now();
doit(start,function(start){
var end = Date.now();
alert(end-start);
});
没有。您将更新DOM与更新显示混淆了
重新绘制脚本实际上是一项功能。for循环更新DOM。for循环结束。然后警报运行。警报将一直阻止,直到用户单击按钮。所有这些都是严格线性的。事件循环正忙于运行该JS
JS函数完成后,浏览器将重新绘制屏幕,并将更新DOM的结果显示在屏幕上
这就是为什么要在循环中更新DOM,就像通常使用而不是for
循环一样
首先,我想了解为什么javascript决定“继续前进”并首先执行更快的代码
它不会先执行“更快”的代码。它按照命令的顺序执行代码
你跑得快。你跑吧。JS事件循环查找要运行的下一个函数。没有。一秒钟过后,超时结束,传递给它的函数被放入队列中运行。事件循环运行该函数
为什么警报会在for循环完成之前发生
function doit(start,callback) {
for (i = 0; i < 100000; i++) {
document.getElementById('edit-cut').innerHTML = "<div></div>";
}
callback(start);
}
var start = Date.now();
doit(start,function(start){
var end = Date.now();
alert(end-start);
});
没有。您将更新DOM与更新显示混淆了
重新绘制脚本实际上是一项功能。for循环更新DOM。for循环结束。然后警报运行。警报将一直阻止,直到用户单击按钮。所有这些都是严格线性的。事件循环正忙于运行该JS
JS函数完成后,浏览器将重新绘制屏幕,并将更新DOM的结果显示在屏幕上
这就是为什么要在循环中更新DOM,就像通常使用而不是for
循环一样
首先,我想了解为什么javascript决定“继续前进”并首先执行更快的代码
它不会先执行“更快”的代码。它按照命令的顺序执行代码
你跑得快。你跑吧。JS事件循环查找要运行的下一个函数。没有。一秒钟过后,超时结束,传递给它的函数被放入队列中运行。事件循环运行该函数
为什么警报会在for循环完成之前发生
function doit(start,callback) {
for (i = 0; i < 100000; i++) {
document.getElementById('edit-cut').innerHTML = "<div></div>";
}
callback(start);
}
var start = Date.now();
doit(start,function(start){
var end = Date.now();
alert(end-start);
});
没有。您将更新DOM与更新显示混淆了
重新绘制脚本实际上是一项功能。for循环更新DOM。for循环结束。然后警报运行。警报将一直阻止,直到用户单击按钮。所有这些都是严格线性的。事件循环正忙于运行该JS
JS函数完成后,浏览器将重新绘制屏幕,并将更新DOM的结果显示在屏幕上
这就是为什么要在循环中更新DOM,就像通常使用而不是for
循环一样
首先,我想了解为什么javascript决定“继续前进”并首先执行更快的代码
它不会先执行“更快”的代码。它按照命令的顺序执行代码
你跑得快。你跑吧。JS事件循环查找要运行的下一个函数。没有。一秒钟过后,超时结束,传递给它的函数被放入队列中运行。事件循环运行该函数
为什么在for循环i之前发生警报