JavaScript 如何创建全局的Promise拒绝处理程序
在本文中,我们首先将尝试理解如何创建一个被拒绝的Promise,然后我们将看到如何创建一个全局的Promise拒绝处理程序,它将尝试(某种方式)处理之前在JavaScript中创建的被拒绝的Promise。
首先,让我们尝试理解如何使用以下受启发的语法在JavaScript中创建一个(带有被拒绝状态的)Promise:
语法:
new Promise ((resolve, reject) => {
reject ("Some rejection message....")
})
现在让我们来看以下示例,它将使用上述语法创建一个被拒绝的promise:
示例1: 在这个示例中,我们将尝试创建一个被拒绝的promise,它将尝试输出一些结果(显然是拒绝的消息本身)。
Javascript
let new_rejected_promise = new Promise((resolve, reject) => {
reject("Something went wrong!!!....");
});
console.log(new_rejected_promise);
输出:
由于在这段代码中,我们没有处理被拒绝的Promise,这是将输出显示在浏览器控制台的唯一原因。
现在是时候看一下下面的示例了,它将帮助我们在JavaScript中创建一个全局Promise拒绝处理程序。
示例2: 在这个示例中,我们将尝试创建一个全局promise拒绝处理程序(以方法的形式),并在该方法中将它分配给一个新的window对象的属性,即 window.onunhandledrejection。 通过使用这个属性,我们将能够一次性捕获所有被拒绝的promise消息,前提是我们没有使用catch()方法来捕获它们。
Javascript
let RejectionHandlerGlobally = (event) => {
console.log("Promise Rejection reason: ", event.reason);
};
window.onunhandledrejection = RejectionHandlerGlobally;
let new_promise = new Promise((resolve, reject) => {
reject("Something went wrong!!...");
});
new_promise.then(() => {
console.log("GeeksforGeeks");
});
输出结果:
注意: 尽管在上面的代码中我们提供了全局的promise拒绝处理器方法,但是在输出中我们仍然遇到了一个错误消息(显示为红色),因此强烈建议我们在任何可能的地方都应该使用catch()方法。