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

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

猜你喜欢

转载自blog.csdn.net/weixin_42424269/article/details/88416767