Promise finally 方法是 ECMAScript 2018 中新增的 Promise 方法之一,它可以在 Promise 成功或失败后,无论是 resolve 还是 reject,都会执行一段特定的代码。
本文将详细介绍 Promise finally 方法的语法、用法及实际应用,为读者提供深度的学习和指导。
Promise finally 方法的语法
Promise finally 方法的语法如下:
promise.finally(onFinally);
其中,promise
表示一个 Promise 对象,onFinally
表示一个函数,在 Promise 完成后无论结果如何都要执行该函数。
Promise finally 方法的用法
下面是 Promise finally 方法的常用场景:
1. finally 方法用于清理资源
在代码执行完成后,我们常常需要进行资源清理工作,比如关闭数据库连接、清理缓存等,这个时候就可以使用 Promise finally 方法来进行资源清理。
示例代码如下:
function fetchData() { return fetch('https://api.example.com/data') .then(response => response.json()) .finally(() => { console.log('Cleaning up resources...'); }); }
在上面的示例代码中,finally 方法在 then 方法执行成功或失败之后都会执行,无论该请求成功还是失败,都将执行清理工作。
2. finally 方法链式调用
Promise finally 方法也可以与其它方法链式调用,使代码更加简洁和可读。
示例代码如下:
Promise.resolve('Done') .then(result => console.log(result)) .catch(error => console.error(error)) .finally(() => console.log('Complete!'));
在上面的示例代码中,Promise finally 方法被链式调用,代码结构更加简洁,同时也能够保证资源释放。
Promise finally 方法的实际应用
在实际项目中,Promise finally 方法也有着广泛的应用。下面将介绍几个常见的应用场景。
1. 处理多个异步请求
在实际项目中,我们常常需要同时进行多个异步请求,这个时候就可以使用 Promise.all 方法来实现。
示例代码如下:
const urls = [ 'https://api.example.com/data1', 'https://api.example.com/data2', 'https://api.example.com/data3', ]; Promise.all(urls.map(url => fetch(url))) .then(responses => Promise.all(responses.map(response => response.json()))) .then(data => console.log(data)) .finally(() => console.log('Complete!'));
在上面的示例代码中,使用 Promise.all 方法同时进行多个异步请求,并在完成后使用 finally 方法释放资源。
2. 异常处理
在实际项目中,异常处理是必不可少的一部分。当代码执行出现异常时,可以使用 Promise catch 方法来捕获异常信息并进行处理。
示例代码如下:
fetch('https://api.example.com/data') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error)) .finally(() => console.log('Complete!'));
在上面的示例代码中,使用 Promise catch 方法捕获异常信息,并在 finally 方法中释放执行资源。
总结
本文介绍了 ECMAScript 2018 中新增的 Promise finally 方法的语法、用法及实际应用。本文所述的示例代码和应用场景是相对简单和基础的,读者可以根据实际项目需求进行更加复杂和高级的应用。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65afc338add4f0e0ff938696