需求
用最简单的示例,对比callback/Promise/async之间的演进对比,理解了callback和Promise的用法,更能体会async的方便之处,且现在推荐都使用async或者Promise和async混合使用
代码
//callback
function callbackFunc(x, callback) {
f1(x, (err1, result1) => {
if (err1) {
console.error(err1);
callback(err1);
return;
}
f2(result1, (err2, result2) => {
if (err2) {
console.error(err2);
callback(err2);
return;
}
console.log(result2);
callback(null, result2);
});
});
}
//Promise
function promiseFunc(x) {
return f1(x)
.then(result1 => {
return f2(result1);
})
.then(result2 => {
console.log(result2);
return result2;
})
.catch(err => {
console.error(err);
throw err;
});
}
//async
async function asyncFunc(x) {
try {
const result1 = await f1(x);
const result2 = await f2(result1);
console.log(result2);
return result2;
} catch (err) {
console.error(err);
throw err;
}
}