然则,一般营业代码 reject 出来的信息平日都是有效的。假如膳绫擎的每个营业 reject 出来的 err 本身就是缺点消息,那么,用 Dima 的模式,仍然须要写
- (err, data) => {
- if (err) {
- // deal with error
- } else {
- // deal with data
- }
- }
前不久看到 Dima Grossman 写的 How to write async await without try-catch blocks in Javascript。看到标题标时刻,我认为异常好奇。我知道固然在异步法度榜样中可以不应用 try-catch 合营 async/await 来处理缺点,然则处理方法并不克不及与 async/await 合营得很好,所以很想知道到底有什么办法会比 try-catch 更好用。
Dima 去除 try-catch 的办法
当然套路依旧,Dima 讲到了回调地狱,Promise 链并最终引出了 async/await。而在处理缺点的时刻,他并不爱好 try-catch 的方法,所以写了一个 to(promise) 来对 Promise 进行封装,辅音解构语法,实现了同步写法但类似 Node 缺点标准的代码。摘抄代码如下
- // to.js
- export default function to(promise) {
- return promise
- .then(data => {
- return [null, data];
- })
- .catch(err => [err]);
- }
应用示例:
- import to from "./to.js";
- async function asyncTask(cb) {
- let err, user, savedTask;
- [err, user] = await to(UserModel.findById(1));
- if (!user) return cb("No user found");
- [err, savedTask] = await to(TaskModel({ userId: user.id, name: "Demo Task" }));
推荐阅读
2016年冬,我在一家创虻公司的小团队里搞软件开辟。彼时我们有一位真实的企业客户,且软件的第一版也已宣布。开辟按进度落成,在宣布时我欣喜若狂,也异常骄傲,看着体系办事于天天几百万>>>详细阅读
本文标题:从不用try-catch实现的async/await语法来说说错误处理
地址:http://www.17bianji.com/lsqh/38423.html
1/2 1