使用了生成器进行异步
// 获取用户信息
function user(){
setTimeout(()=>{
let ss = 0
// 这个定时器就是相当于调用接口的存在
let just = setInterval(()=>{
if(ss >= 4){
// 接口调用成功
let data = {id:0,name:'xiaoming',isxian:true}
// 用户id传递给getList用来获取列表数据
chen.next(data.id)
// 清除定时器
clearInterval(just)
}
ss++
},1000)
},1000)
}
// 根据用户id获取列表
function getList(id){
setTimeout(()=>{
let ss = 0
// 获取到了用户id 根据用户id获取列表
console.log(id,'id')
// 这个定时器就是相当于调用接口的存在
let just = setInterval(()=>{
if(ss >= 4){
// 列表获取成功
let data = {id:3,name:'lihong',isxian:false}
chen.next(data.isxian)
clearInterval(just)
}
ss++
},1000)
},1000)
}
function getPhone(xian){
setTimeout(()=>{
let ss = 0
// 获取到了传递的值
console.log(xian,'xian')
// 这个定时器就是相当于调用接口的存在
let just = setInterval(()=>{
if(ss >= 4){
// 接口获取成功
clearInterval(just)
let data = {id:0,name:'xiaoming',isxian:true}
}
ss++
},1000)
},1000)
}
function * onLoad(){
// 在user方法内调用 chen.next(id) 并传值 在这里进行接收
let id = yield user()
// 在getList方法内调用 chen.next(xian) 并传值 在这里进行接收
let xian = yield getList(id)
// 将值传递给 getPhone方法
yield getPhone(xian)
}
let chen = onLoad()
chen.next()
不使用生成器
// 获取用户信息
function user(){
let ss = 0
// 这个定时器就是相当于调用接口的存在
let just = setInterval(()=>{
if(ss >= 4){
// 接口调用成功
let data = {id:0,name:'xiaoming',isxian:true}
// 用户id传递给getList用来获取列表数据
getList(data.id)
// 清除定时器
clearInterval(just)
}
ss++
},1000)
}
// 根据用户id获取列表
function getList(id){
let ss = 0
// 获取到了用户id 根据用户id获取列表
console.log(id,'id')
// 这个定时器就是相当于调用接口的存在
let just = setInterval(()=>{
if(ss >= 4){
// 列表获取成功
let data = {id:3,name:'lihong',isxian:false}
getPhone(data.isxian)
clearInterval(just)
}
ss++
},1000)
}
function getPhone(xian){
let ss = 0
// 获取到了传递的值
console.log(xian,'xian')
// 这个定时器就是相当于调用接口的存在
let just = setInterval(()=>{
if(ss >= 4){
// 接口获取成功
clearInterval(just)
let data = {id:0,name:'xiaoming',isxian:true}
}
ss++
},1000)
}
user()
这两种方法不是都可以实现吗,那么使用生成器的好处是什么,,还是我理解的不对