Promise的catch()函数
注意1:Promise的rejected必须被处理,否则整个node会奔溃
new Promise((resolve, reject) => { reject("FAIL") })
运行结果
$ node p.js
(node:30853) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): FAIL
因为Promise的reject没有被处理。
例子2:
new Promise((resolve, reject) => { reject("FAIL") })
.catch((reason) => { console.log("THROW: " + reason) })
再运行
$ node p.js
THROW: FAIL
如果不管异常内容,直接丢弃异常,可以这样处理:
new Promise((resolve, reject) => { reject("FAIL") })
.catch((reason) => { })
//.catch(() => {}) // 或者
注意2:异常的返回也是一个Promise
new Promise((resolve, reject) => { reject("FAIL") })
.catch((reason) => { console.log("catch: " + reason); return "CATCH" })
.then((value) => { console.log("then : " + value) })
运行结果
$ node p.js
catch: FAIL
then : CATCH
我们看到在catch()里面返回一个resolved(通过return语句实现)的Promise可以被后面的then()函数继续处理。
例子2
new Promise((resolve, reject) => { reject("FAIL") })
.catch((reason) => { console.log("catch: " + reason); throw "CATCH" })
.then((value) => { console.log("then : " + value) })
.catch((reason) => { console.log("catch2: " + reason) })
运行
$ node p.js
catch: FAIL
catch2: CATCH
我们看到在catch()里面返回一个rejected(通过throw语句实现)的Promise可以被后面的catch()函数继续处理。