文档章节

[node.js] async/await如何优雅处理异常?

o
 osc_z1hvg4cu
发布于 2018/04/24 14:50
字数 313
阅读 21
收藏 0

精选30+云产品,助力企业轻松上云!>>>

node.js的世界,从callback开始,不会止于async.

所有人都在骂为什么不能完全进化,其实我感觉这就是老外的细心,为了承上。这也就是为什么async其实就是promise一样,假如不是一样的东西,如何承上启下。node.js异常处理一直为人诟病,其实为什么不能优雅心里没有*数吗?这就是设计得辣鸡....好吧,我只是一个用辣鸡的辣鸡。

有些东西不能改变,只能自己改变自己。google了一番,我大概找出了2种我自己喜欢的方式。

一、我只是console一下,我不处理。


async function getData(){
  const a = await someFunction().catch((error)=>console.log(error));
  const b = await someOtherFunction().catch((error)=>console.log(error));
  if(a && b ) console.log("some result")
}

二、约定法则


const go = async () => {
    const readFileResult = await sureThing(readFile('some.json'));
    if (readFileResult.ok) {
        const {
            ok,
            error,
            data
        } = await sureThing(parseJSON(data));
        if (ok) {
            // use our data
        } else {
            return {
                ok,
                error
            };
        }
    } else {
        return readFileResult;
    }
};

以上2种方法,我觉得是比较适合现在的。第一种的不处理,显得更有佛性。而第二种,在保留了同步的写法,也可以处理异步,相得益彰。

打个广告: nodejs 学习群 atob('ODMwNTMxODc=')

https://medium.com/tech-buddy/async-await-without-try-catch-in-javascript-fdd38abf7e90 https://dzone.com/articles/easier-error-handling-using-asyncawait

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
理解异步编程

异步的高性能为 Node 带来了高度的赞誉,而异步编程也为其带来了部分的诋毁。 异步编程从早期的 callback、事件发布订阅模式到 ES6 的 Promise、Generator 在到 ES2017 中 async,看似风格迥...

Yzz
2019/06/24
0
0
从零开始学习Koa(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_17775997/article/details/84932642 一、Koa 框架介绍 Node.js 是一个异步的世界,官方 API 支持的都是...

大灰狼的小绵羊哥哥
2018/12/09
0
0
Node.js 框架对比之 Express VS Koa

背景 上图是一个典型的采用 Node.js 开发 web 应用的前后端结构,下面介绍一下 Node 服务层在其中的作用以及使用 Node.js 的一些优劣。 Node 服务层作用: 请求代理 传统做法是后端提供 api ...

大灰狼的小绵羊哥哥
2018/10/12
0
0
Node.js 8

编者:本文作者孝达,经作者允许,刊载于 Alinode 团队博客。未经允许,不得转载。 端午节结束了。虽然接下来的四个月都没有节假日,但笔者一点都不烦恼。因为 Node.js 8 在端午后第一个工作...

_朴灵_
2018/05/14
0
0
让代码更简洁的 —— Async/Await

Async/Await 是 ECMAScript 新引入的语法,能够极大地简化异步程序的编写,本文详细介绍了 Async/Await 的用法以及与传统方式的对比,通过样例体现了 Async/Await 的优势。 现代的 JavaScri...

osc_sehzzy9h
2019/07/18
4
0

没有更多内容

加载失败,请刷新页面

加载更多

dict.items()和dict.iteritems()有什么区别?

问题: Are there any applicable differences between dict.items() and dict.iteritems() ? dict.items()和dict.iteritems()之间是否有适用的区别? From the Python docs: 从Python文档中......

法国红酒甜
35分钟前
20
0
R中“ =”和“ <-”赋值运算符有什么区别?

问题: What are the differences between the assignment operators = and <- in R? R中赋值运算符=和<-之间有什么区别? I know that operators are slightly different, as this example ......

fyin1314
今天
20
0
之间的区别 和

问题: I'm learning Spring 3 and I don't seem to grasp the functionality behind <context:annotation-config> and <context:component-scan> . 我正在学习Spring 3,并且似乎不太了解<......

javail
今天
15
0
业内首款,百度工业视觉智能平台全新亮相

本文作者:y****n 业内首款全国产化工业视觉智能平台——百度工业视觉智能平台亮相中国机器视觉展(Vision China),该平台所具有的核心AI能力完全自主可控,在质检、巡检等场景中具有高效、...

百度开发者中心
昨天
7
0
我们如何制作xkcd样式图? - How can we make xkcd style graphs?

问题: Apparently, folk have figured out how to make xkcd style graphs in Mathematica and in LaTeX . 显然,民间已经想出了如何在Mathematica和LaTeX中制作xkcd风格的图形。 Can we d......

富含淀粉
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部