Javascript setTimeout:如何打印顺序中给出的值?

时间:2019-02-11 22:57:54

标签: javascript

我已经开始学习JavaScript,并试图弄清楚如何实现这一目标?

console.log(1);    
setTimeout(() => {  
    console.log(2);  
}, 2000);   
console.log(3);

我们知道输出为1,3,2
如何按给定的顺序获取输出。
示例:先打印1,然后等待2秒钟,然后再打印2,再打印3。

3 个答案:

答案 0 :(得分:1)

这样做吗?我想念什么吗?

console.log(1)
setTimeout(() => {  
    console.log(2) 
    console.log(3)
}, 2000)

答案 1 :(得分:0)

我认为您可能正在寻找的(虽然从问题中看不出来)是所谓的“回调”功能。通常的想法是,当函数A完成时,它将调用函数B(回调)。通过这种方式,您可以将所有东西链接在一起,以按所需的顺序运行。

查看示例:

const callback = function(){
	console.log(3);	
};

$('#go').on('click', function(){
	console.log('1')
	setTimeout(function(){
		console.log(2);
		callback();
	}, 2000);  
	
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="go">Go</button>

答案 2 :(得分:0)

用户RxJ和一些反应式编程。

const { of, Subject } = rxjs;
const { delay } = rxjs.operators;

const watch = new Subject();

console.log(1);

of(1).pipe(delay(2000)).subscribe(() => {
  console.log(2);
  watch.next();
});

watch.subscribe(() => {
  console.log(3);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>