js系列四十:异步与同步

本文探讨JavaScript中的异步与同步概念。同步意味着代码执行会等待请求完成;而异步则允许代码在等待结果的同时继续执行。通过一个双人问答场景举例,异步如同不等待回答就继续提问,同步则是等待回答后再进行。文中还通过Promise和async/await语法展示了它们在实际代码中的应用差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是异步?什么是同步?在代码中我们经常会涉及到两个不同的概念,她们就是同步与异步.
同步:是指发起一个请求时, 如果未得到请求结果,代码将会一直等待,直到结果出来,才会执行后面的代码.
异步:是指当发起一个请求时,不会等待请求结果,而是直接继续执行后面的代码.

我们可以用一个双人问答的场景来比喻异步与同步,A向B问了一个问题之后,然后就笑呵呵的等待B的回答,B回答之后A才会接着问下一个问题,这是同步,A向B问了一个问题之后,不等待B的回答接着问下一个问题,这就是异步.

在javascript中,也可以用代码来表示他们之间的区别.
首先使用promise模拟一个发起请求的函数,该函数执行后,会在1s之后返回数值30.

function fn() {
	return new Promise(function(resolve, reject) {
		setTimeout(function() {
			resolve(30);
		}, 1000)
	})
}

该函数的基础上,可以使用async/await语法来模拟同步的效果.

var foo = async function() {
	var t = await fn();
	console.log(t);
	console.log("next code");
}

foo();

// 1s之后输出
30
next code

而异步效果则不会有同样的效果.

var foo = function() {
	fn().then(function(resp) {
		console.log(resp);
	});
	console.log("next code");
}

输出结果

next code 
// 暂停1s之后输出
30
博客
v8worker
05-08 2958
05-06 2941
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值