js中的同步函数,异步函数及其具体应用

本文深入探讨了JavaScript中的异步编程概念,包括同步与异步函数的区别,如何使用Promise、async/await处理异步操作,以及并行执行异步函数的技巧。

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

1.同步函数:当一个函数同步调用时,该函数不会被调用时不会立即返回,直到该函数所要做的事情全部做完了才返回
2.异步函数:当一个异步函数被调用时,该函数会立即返回,尽管这个函数规定的操作任务还没有完成

javascript是异步编程的,这是js的一个优点,但是也是它的一个缺点,因为当我们想要使用函数执行完成的结果来进行下一步操作时,会有一些麻烦,解决这种问题的方法是回调,因为回调的代码的层次很深不便于维护,所以有了promise,但是promise也有一些缺点,所以我们有async和await,但是二者都有其各自的优点,所以通常我们是二者结合起来使用的。

在js中我们可以使用async函数表达式来定义一个异步函数,在异步函数中我们可以使用await放在promise之前,将会暂停执行这个函数,直到promise执行或者是拒绝

并行执行一个异步函数

function pause(){
 return new Promise((res)=>setTimeout(res,500));
}

const promise1 = pause();
const promise2 = pause();
Promise.all([promise1,promise2]).then(()=>{console.log('i will be logged after 500ms')})

但是如果我们写成这样的话,因为await要等到第一个完成之后再开始执行,所以需要1000ms之后才会打印出内容

async function waitForMoment(){
	await pause();
	await pause();
	console.log('i will be logged after 1000ms');
}

为了解决这个问题,我们必须调整位置

async function inParalell(){
	const await1 = pause();
	const await2 = pause();
	await await1;
	await await2;
	console.log('i will be logged after 500ms');
}

而在func当中,我们常使用的是async表达式创建的一个异步函数,就像这样

export async function listAll(param){
  return request(createTheURL(Config.API.APPLICATION,'list'),{
    method: 'GET',
    body:param,
  })
}

其中的request函数会返回一个promise

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值