1、异常捕获
getJSON("/post/1.json").then(function(post) { return getJSON(post.commentURL); }).then(function funcA(comments) { // 这里的异常,then的第二个参数捕获不到
console.log("resolved: ", comments); }, function funcB(err){ console.log("rejected: ", err); });
2、冒泡性质
Promise 对象的错误具有“冒泡”性质,会一直向后传递,直到被捕获为止。也就是说,错误总是会被下一个catch
语句捕获。
getJSON('/post/1.json').then(function(post) { return getJSON(post.commentURL); }).then(function(comments) { // some code
}).catch(function(error) { // 处理前面三个Promise产生的错误
});
上面代码中,一共有三个 Promise 对象:一个由getJSON
产生,两个由then
产生。它们之中任何一个抛出的错误,都会被最后一个catch
捕获。
这也是then的第二个参数处理不了的。