prototype
Promise
链式编程
常规写法
new Promise((resolve,reject)=>{
//此处进行请求数据等耗时操作,获取返回结果为data
resolve(data)
}).then(data=>{
//此处对data进行进一步的处理
}).catch(error=>{
//此处捕捉错误
})
另一种写法
new Promise((resolve,reject)=>{
//此处进行请求数据等耗时操作,获取返回结果为data
resolve(data)
}).then(函数1,函数2)//函数1为resolve回调函数,函数2为reject回调函数
Promise的链式调用
关于Promise的简写
new Promise((resolve,reject)=>{
//此处进行请求数据等耗时操作,获取返回结果为data
resolve(data)
}).then(data=>{
//此处对data进行进一步的处理
return new Promise((resolve,reject)=>{
//此处进行请求数据等耗时操作,获取返回结果为data1
data1 = process(data)
resolve(data1)
})
})
new Promise((resolve,reject)=>{
//此处进行请求数据等耗时操作,获取返回结果为data
resolve(data)
}).then(data=>{
//此处对data进行进一步的处理
return new Promise((resolve)=>{//reject可以省略
//此处进行请求数据等耗时操作,获取返回结果为data1
data1 = process(data)
resolve(data1)
})
})
new Promise((resolve,reject)=>{
//此处进行请求数据等耗时操作,获取返回结果为data
resolve(data)
}).then(data=>{
//此处对data进行进一步的处理
data1 = process(data)
return Promise.resolve(data1)
})
new Promise((resolve,reject)=>{
//此处进行请求数据等耗时操作,获取返回结果为data
resolve(data)
}).then(data=>{
//此处对data进行进一步的处理
data1 = process(data)
return data1 //在then()中直接返回数据,Promise会对其进行包装
})
new Promise((resolve,reject)=>{
//此处进行请求数据等耗时操作,获取返回结果为data
resolve(data)
}).then(data=>{
return Promise.reject(error)
//throw "error message" 这里直接手动抛出异常,catch也是能够捕获的
}).catch(error=>{
console.log(error)
})
Promise.all()【等待多个异步请求全部完成后回调】
//参数是一个iterator,可迭代对象。这里传入一个数组
Promise.all([
new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve({'name':'jilegeji','age':22})
},1000)
}),
new Promise((resolve,reject)=>{
setTimeout(()=>{
resolve({'name':'mikal bridge','age':23})
},2000)
})
]).then(results=>{
console.log(results)//这里的results为一个数组。顺序为传入参数的返回结果顺序
})