nodejs ES6中的async和await使用实例
几种写法,async和await 有效的解决了之前Promise多层回调的问题。 让代码根据可读性。
传统写法
javascript
aa().then(res=>{
bb(res).then(br=>{
cc(br).then(cr=>{
dd(cr).then(dr=>{
//...无限嵌套
})
})
})
})
aa().then(res=>{
bb(res).then(br=>{
cc(br).then(cr=>{
dd(cr).then(dr=>{
//...无限嵌套
})
})
})
})
这种写法对于后期维护是灾难性的。
async和await写法
javascript
async function aa(a) {
return a + Math.random()
}
async function bb(b) {
var c = await aa(b)
console.log(`c:${c}`)
return c
}
// bb(100).then(res => {
// console.log(res)
// });
function cc(c) {
return new Promise(((resolve, reject) => {
resolve(100);
}));
}
async function dd() {
var d = await cc(100)
console.log(d)
}
//这里调只能获取到一个Promise
console.log(dd())
//正确的调用方法
dd().then(res => {
//正确的时候
console.log(`res:${res}`)
}).catch(err => {
//错误的时候
//...
}).finally(() => {
//不管正确错误都执行
})
async function aa(a) {
return a + Math.random()
}
async function bb(b) {
var c = await aa(b)
console.log(`c:${c}`)
return c
}
// bb(100).then(res => {
// console.log(res)
// });
function cc(c) {
return new Promise(((resolve, reject) => {
resolve(100);
}));
}
async function dd() {
var d = await cc(100)
console.log(d)
}
//这里调只能获取到一个Promise
console.log(dd())
//正确的调用方法
dd().then(res => {
//正确的时候
console.log(`res:${res}`)
}).catch(err => {
//错误的时候
//...
}).finally(() => {
//不管正确错误都执行
})