关于async await 用于两个顺序执行的异步函数用法的思考

首先, 大家在项目中肯定经常遇到这样的问题, 我一个函数的参数必须得依赖于上一个函数(ajax请求等)得到的结果,这种情况解决方法有几种;

  • 第一 肯定是使用 ES6的Promise, 然后在初始化promise的实例调用then方法:
  • 第二, 可以使用async await。我们首先要知道,async函数返回的一定是一个promise对象,标有await的函数,必须是一个里面含有promise操作的函数;下面给出代码
let promise1 = async function (){
	let pro1 = await getUserId(); //2
	//if(pro1)  可以判断是否返回有userId
	let pro2 = await getUserInfo(); //1
	console.log(pro1, pro2); //2s之后才打印

	return pro2
}

//获得userId
function getUserId(){
	return  new Promise((resolve, reject) => {
		setTimeout(function () {
		let res;
		setTimeout(function () {

			res = 2;
			resolve(res);


		}, 1000);
		})
	})
}

//获得userId之后,才能根据id进行请求
function getUserInfo(){
	return  new Promise((resolve, reject) => {
		let res;
		setTimeout(function () {
			res = 1;
			resolve(res);

		}, 1000);
		
	})
}

	
console.log(promise1())//返回的是promise, 立即返回

关于async await 用于两个顺序执行的异步函数用法的思考_第1张图片

你可能感兴趣的:(javascript,ES6,Promise)