咨询:用Promise.then()改写JavaScript async/await代码的最优方式
你的写法能实现功能,但不是最简洁高效的——犯了Promise的常见冗余错误:没必要手动套一层new Promise,因为dbQuery()和dbQuery2()本身就返回Promise,直接用链式调用就能搞定,代码更清爽,还能避免嵌套。
优化后的版本可以这样写:
let getDatabaseData = () => { return dbQuery() .then(res1 => { // 拿到res1后调用dbQuery2,再合并结果 return dbQuery2(res1).then(res2 => res1 + res2); }); } getDatabaseData().then(dbData => { console.log(dbData); });
甚至可以更紧凑一点:
let getDatabaseData = () => dbQuery().then(res1 => dbQuery2(res1).then(res2 => res1 + res2)); getDatabaseData().then(console.log);
链式调用完全适配你的场景:getDatabaseData作为封装两个异步操作、合并结果的辅助方法,链式写法能让异步逻辑按顺序线性展开,比嵌套写法可读性高得多,也更符合Promise的设计初衷。
另外补充:如果需要处理异步过程中的错误,只需要在链式末尾加上.catch(err => {/* 错误处理逻辑 */})即可,和async/await里的try/catch作用一致。
内容的提问来源于stack exchange,提问作者JackG
相关产品推荐
相关产品推荐

