js 利用一个try catch来捕获多个await 产生的错误
首先例举一个嵌套回调的例子
该例子的缺点是
(1)层层嵌套,可读性差
(2)每一个异步请求都需要捕获错误
// 首先这个是一个嵌套回调的例子 http.get('http://www.baidu.com', function (res) { console.log(res) http.get('http://www.baidu.com', function (res) { console.log(res) http.get('http://www.baidu.com', function (res) { console.log(res) }).on('error', function (err) { console.error('some error3') }) }).on('error', function (err) { console.error('some error2') }) }).on('error', function (err) { console.error('some error1') })
利用一个try catch来捕获多个await 产生的错误
var http = require('http') var co = require('co') // 先将 get 函数封装成返回 Promise 对象的函数 var get = function (url) { return new Promise(function (resolve, reject) { http.get(url, function (res) { resolve(res) }).on('error', function (err) { reject(err) }) }) } async function gen () { try { var r1 = await get('http://www.baidu.com') console.log(r1) var r2 = await get('http://www.baidu.com') console.log(r2) var r3 = await get('http://www.baidu.com') console.log(r3) } catch (err) { // 捕获异步请求的错误统一处理 console.log(err) } }