我想要一个同步javascript的例子。
假设我有三个功能
fun1();
fun2();
fun3();
他们都记录了一些数据。但我希望第二个函数fun2()暂停脚本5秒钟然后继续。
执行setTimeout无法正常工作。
答案 0 :(得分:0)
Javascript是单线程语言,因此默认情况下,所有任务都是同步的。因此func3
将在func2
之后调用。
但如果您在func2
或setTimeout
内XHR
内有任何异步任务,则序列将会中断。
在这种情况下,您有两个选项,即Callback
和Promises
。
function func1(){
var num = 0;
for(var i = 0; i< 1000; i++){
num += i;
}
console.log('func1: ', num);
}
function func2(){
var num = 0;
for(var i = 0; i< 1000000; i++){
num += i;
}
console.log('func2: ', num);
}
function func3(){
var num = 0;
for(var i = 0; i< 10000; i++){
num += i;
}
console.log('func3: ', num);
}
func1();
func2();
func3();
答案 1 :(得分:0)
Javascript没有办法避免阻止事件循环。因此,编写一个故意阻塞循环给定时间的函数是非常不自然的。
话虽如此,只有当你保证永远不会将它用于演示以外的任何事情时,你可以这样做:
"use strict"
var object = {
odd: 'a',
even: 'b',
odd: 'c',
even: 'd'
};
Object.keys(object).forEach(prop => console.log(`${prop} - ${object[prop]}`));