Promise.resolve(() => 'John') .then(() => { throw new Error('ops'); }) .catch((ex) => { console.log(ex); }) .then(() => { throw new Error('ups'); console.log(Doe'); })
在第3行会抛出一个异常。
catch会处理它,并且在stdout中打印出:[Error: ops]
执行继续,并且在第9行会抛出一个新的错误
没有了
的确没有什么了 - 最后一个被抛出的错误将会是静默的。你需要注意,你应该始终以一个catch语句作为promise链的最后一环。 这会为你解决很多头疼的问题。像下面这样:
Promise.resolve(() => 'John') .then(() => { throw new Error('ops'); }) .catch((ex) => { console.log(ex); }) .then(() => { throw new Error('ups'); console.log(Doe'); }) .catch((ex) => { console.log(ex); });
现在会输出如下内容:
[Error: ops] [Error: ops]
使用JavaScript标准风格在过去几年中,我们会使用JSHint、JSCS、ESLint等非常有用的代码质量工具来尽可能的自动化检查我们的代码。
最近,当谈到代码风格的时候,我们使用feross的JavaScript标准风格。
原因是它非常的简单:无需任何配置文���,只需要将其放到项目中。主要包括如下一些规则:
使用2个空格作为缩进
字符串使用单引号 - 除了为了避免转义
不要包括没有被使用的变量
没有分号
永远不要以 ( 或者 [ 作为一行的开始
关键字后加空格 if (condition) { ... }
函数名后加空格 function name (args) { ... }
始终使用===代替==,但是可以使用obj == null来检查null || undefined。
始终要处理Node.js的err函数参数
始终要为浏览器全局变量增加window前缀,除了document和navigator
尽可能避免使用类似于open、length、evet、name等走位浏览器全局变量。
当然,如果你的 编辑器只支持ESLint的话,这里有一个ESLint的规则库用于使用标准风格,即eslint-plugin-standard。 安装了这个插件后,你的.eslintrc文件可以是下面这样的:
{ "plugins": [ "standard" ], }
12-Factor应用(The Twelve-Factor Application)如今,软件通常会作为一种服务来交付,它们被称为网络应用程序,或软件即服务(SaaS)。 12-Factor应用宣言描述了进行Web应用开发的最佳实践:
基准代码:一份基准代码,多份部署
依赖:显示声明依赖
配置:在环境中存储配置
后端服务:把后端服务当作附加资源
构建、发布、运行:严格分离构建和运行
进程:以一个或多个无状态进程运行应用
端口绑定:通过端口绑定提供服务
并发:通过进程模型进行扩展
易处理:快速启动和优雅终止可最大化健壮性
开发环境与线上环境等价:尽可能的保持开发、预发布、线上环境相同
日志:把日志当作事件流
管理进程:后端管理任务当作一次性进程运行
这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序。
开始新的项目始终通过npm init命令来开始一个新项目。这可以为你的项目创建一个初始的package.json。
如果你想跳过初始的提问并直接使用默认的配置,只需要运行npm init --yes即可。
监控你的应用当发生某个故障或是故障即将发生时,及时的通知你,能够为你挽回损失。