JavaScript promise.finally()方法
JavaScript promise被接受或拒绝,并且始终使用finally()过程。无论promise被完成还是被拒绝,都会调用finally()方法。
一旦异步函数完成,Promise是一个JavaScript对象,它会产生一个值。如果由于超时而无法完成操作,会产生错误。
ES2018引入了finally()函数。如果你想在承诺被实现后清理资源,无论结果如何,都可以将代码放在finally()方法中。
它可以被用来在承诺解决后执行清理任务,因为无论承诺是实现还是被拒绝,它都会被执行。Promise的then()和catch()函数不会被复制。
语法
以下语法使用JavaScript函数来操作promise finally()方法。
promise
.then(result => { //write code. })
.catch(error => { //write code. })
.finally(() => { //write code. })
或
task.finally(function() {
// the promise settles and displays as an output
});
解释:
- 正如之前指示并在下面进一步解释的那样,该方法只有一个参数。
<!DOCTYPE html>
<html>
<head>
<title> JavaScript's Promise.finally() method </title>
</head>
<body>
<h3> JavaScript's Promise.finally() method </h3>
<p> output shows in console tab </p>
<script>
const Promise1 = Promise.resolve(80);
console.log("JavaScript's Promise.finally() method");
Promise1
.then((values) => console.log(values))
.catch((err) => console.log(err))
.finally(() => console.log("Operations of the Promise.finally have completed."));
</script>
</body>
</html>
输出
该图像显示了通过finally方法解析数据的前景数据。
示例2:
此示例显示了具有promise变量和finally()方法的JavaScript promise函数。在这里,我们使用promise来执行resolve和reject操作,并显示finally()方法的数据。finally方法不会影响已解决和已拒绝的信息。
<!DOCTYPE html>
<html>
<head>
<title> JavaScript's Promise.finally() method </title>
</head>
<body>
<h3> JavaScript's Promise.finally() method </h3>
<p> Here, We use only the finally method with a promise to display the required output. </p>
<p> output shows in console tab </p>
<script>
const Promise2 = new Promise((resolve, reject) =>
setTimeout(reject, 200, 'java'));
console.log("JavaScript's Promise.finally() method");
Promise2
.finally(() => console.log("function of the Promise.finally() have completed."));
</script>
</body>
</html>
输出
该图像显示了使用finally方法解析数据的承诺数据。
示例3:
该示例展示了带有finally方法的JavaScript promise函数。在这里,我们使用promise来使用resolve和reject操作以及值。该方法的信息将显示在输出数据中。
在promise函数中,我们使用resolve和reject条件设置了时间。
<!DOCTYPE html>
<html>
<head>
<title> JavaScript's Promise.finally() method </title>
</head>
<body>
<h3> JavaScript's Promise.finally() method </h3>
<p> output shows in console tab </p>
<script>
const Promise2 = new Promise((resolve, reject) =>
setTimeout(reject, 200, 'java'));
console.log("JavaScript's Promise.finally() method");
Promise2
.then((values) => console.log(values))
.catch((err) => console.log(err))
.finally(() => console.log("Operations of the Promise.finally have completed."));
</script>
</body>
</html>
输出
图片展示了使用finally方法数据的承诺和拒绝数据。
示例4:
这个示例展示了带有reject和finally方法的JavaScript promise函数。在这里,我们使用一个promise来拒绝操作,并附带一个值。输出数据展示了方法的信息。
<!DOCTYPE html>
<html>
<head>
<title> JavaScript's Promise.finally() method </title>
</head>
<body>
<h3> JavaScript's Promise.finally() method </h3>
<p> output shows in console tab </p>
<script>
let Promise2 = Promise.reject("Rejected Data");
console.log("JavaScript's Promise.finally() method");
Promise2
.then((values) => console.log(values))
.finally(() => console.log("Operations of the Promise.finally() have completed."));
</script>
</body>
</html>
输出
该图像展示了承诺的解析,并使用 finally 方法拒绝数据。
示例5
该示例展示了使用JavaScript Promise函数的reject、then和finally方法。方法的信息将与finally方法的输出数据一起显示。无论”then()”方法是否正常工作,最终方法也会执行操作。
<!DOCTYPE html>
<html>
<head>
<title> JavaScript's Promise.finally() method </title>
</head>
<body>
<h3> JavaScript's Promise.finally() method </h3>
<p> output shows in console tab </p>
<script>
let Promise2 = new Promise((resolve, reject) => {
setTimeout(() => {
reject("Promise is rejected!");
}, 5000);
});
Promise2
.then(
(data) => {
console.log(data);
},
(error) => {
console.log("Error:", error);
}
)
.finally(() => {
console.log(
"This is finally() block shows final output as an information."
);
});
</script>
</body>
</html>
输出
该图像显示了使用“then”和“finally”方法解析数据的承诺数据。
示例6:
promise.finally()方法在promise.any()类别中使用以完成操作并显示输出。我们可以使用所有方法来处理可迭代的值。finally()方法调用输入信息并将其显示为输出。
<!DOCTYPE html>
<html>
<head>
<title> JavaScript's Promise.any() method </title>
<script>
console.log("JavaScript's Promise.any() method");
const pr1 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log(' first Promise is rejected');
reject('error');
}, 1000);
});
const pr2 = new Promise((resolve, reject) => {
setTimeout(() => {
console.log(' second Promise is fulfilled');
reject('error1');
}, 2000);
});
Promise.any([pr1, pr2])
.then((values) => console.log(values))
.catch((err) => console.log(err))
.finally(() => console.log("Operations of the Promise.any() have completed."));
</script>
</head>
<body>
<h3> JavaScript's Promise.any() method </h3>
</body>
</html>
输出
控制台选项卡显示具有聚合信息的输出。
结论
JavaScript的finally()方法是有效的,即使承诺数据被显示或未显示作为输出。它使用JavaScript promises显示默认数据。