首先, 大家在项目中肯定经常遇到这样的问题, 我一个函数的参数必须得依赖于上一个函数(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, 立即返回