什么时候处理异步事件?
上面代码有什么问题吗?
如何做呢?
回调地狱 - - !
//Promise参数是一个函数 //resolve,reject本身又是函数 new Promise((resolve,reject)=>{ //异步操作 setTimeout(()=>{ console.log('hello world'); setTimeout(()=>{ console.log('hello promise'); setTimeout(()=>{ console.log('hello vue'); },1000) },1000) },1000) })
解决方法: 链式编程
//Promise参数是一个函数 //resolve,reject本身又是函数 new Promise((resolve,reject)=>{ //异步操作,第一次网络请求 setTimeout(()=>{ //第一次请求结果 console.log('hello world'); //再次请求 resolve() },1000) }).then(()=>{ //第二次网络请求 setTimeout(()=>{ //第二次请求结果 console.log('hello vue'); return new Promise((resolve,reject)=>{ //返回后再次请求 resolve() }) },1000) }).then(()=>{ //第三次网络请求 setTimeout(()=>{ //第三次请求结果 console.log('hello java'); },1000) })
当执行new Promise() 是,会执行构造函数,保存一些状态信息,执行传入的函数
在执行传入的回调函数是,会传入两个参数,resolve,reject,本身又是函数
new Promise((resolve,reject)=>{ setTimeout(()=>{ //get data resolve(data) //失败的时候调用reject reject('error message') },1000) }).then((data)=>{ //data处理代码 }).catch((err)=>{ //error处理代码 })
synchronization: 同步
asynchronization: 异步
new Promise((resolve,reject)=>{ setTimeout(()=>{ //resolve('hello,vuejs') reject('err message') },1000) }).then( (data) =>{ console.log(data); }, (err) => { console.log(err); } )