Promise的catch()函数

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()函数继续处理。

你可能感兴趣的:(Promise的catch()函数)