一、rxjs方式
首先需要下载rxjs文件
关于rxjs的学习文档如下:
1、两个异步合并(都返回了值才往下运行)
clickChange() {
console.log("按下",this.title)
const observer = {
next : item => console.log("==>"+item[0])//这里是一个数组,对应zip第一个参数返回的值
}
var oa=zip(this.observable1(),this.observable2())
oa.subscribe(observer)
},
//异步方法一
observable1(){
const observable = new Observable(observer => {
setTimeout(() => {
observer.next('我是异步一')
}, 8000)
})
return observable
},
//异步方法二
observable2(){
const observable = new Observable(observer => {
setTimeout(() => {
observer.next('我是异步二')
}, 7000)
})
return observable
}
使用:直接调用clickChange方法即可
二、使用promise方式
1、两个异步合并代码
const Ajax = new Promise((resolve, reject) => {
getAllRecruiter().then(res => {
console.log('Ajax异步成功')
resolve(res)
}).catch((err) => {
console.log('Ajax异步失败')
reject(err);
})
})
const Ajax0 = new Promise((resolve, reject) => {
getAllEmploymentType().then(res => {
console.log('Ajax0异步成功')
resolve()
}).catch(() => {
console.log('Ajax0异步失败')
reject(err);
})
})
Promise.all([Ajax, Ajax0]).then(() => {
console.log('多个异步结束')
//所有请求都成功后执行函数
// this.getOldData()
}).catch(() => {
// 异常处理
console.log('多个异步结束(失败)')
})
2.promise的对象方法(p1,p2,p3为promise的实例对象)
①Promise.all()并发处理多个异步任务,所有任务都执行完成才能得到结果
Promise.all( [p1,p2,p3] ) .then ( (result) => {consoleog (result)
})
②Promise.race()并发处理多个异步任务,只要有一个任务完成就能得到结果
Promise.race ( [p1,p2,p3] ).then ( (result)=>{
console. log (result)
})