在 ES9 中,finally
函数被引入到同步和异步函数中,它可以在函数执行完毕后无论成功或失败都会被执行。finally
函数主要用于清理资源或者执行一些必须的操作,比如关闭文件、释放内存等。
同步函数中的 finally 函数
在同步函数中,finally
函数的用法非常简单,它会在 try
和 catch
语句块执行完毕后被调用。下面是一个简单的示例代码:
// javascriptcn.com 代码示例 function divide(a, b) { try { return a / b; } catch (e) { console.error('Error:', e); } finally { console.log('finally'); } } console.log(divide(10, 2)); // Output: 5, finally console.log(divide(10, 0)); // Output: Error: Infinity, finally
在上面的代码中,如果除数 b
为 0,则会抛出一个异常,控制台会输出错误信息。无论是否抛出异常,finally
函数都会被执行,控制台会输出 finally
。
异步函数中的 finally 函数
在异步函数中,finally
函数的用法与同步函数类似,它会在异步操作执行完毕后被调用。下面是一个使用 Promise 的异步函数示例:
// javascriptcn.com 代码示例 function fetchUser(id) { return new Promise((resolve, reject) => { setTimeout(() => { if (id === 1) { resolve({ id: 1, name: 'Alice' }); } else { reject(new Error('User not found')); } }, 1000); }); } fetchUser(1) .then((user) => { console.log(user); }) .catch((error) => { console.error('Error:', error); }) .finally(() => { console.log('finally'); });
在上面的代码中,如果 Promise 对象的状态为 fulfilled
,则会输出用户信息。如果状态为 rejected
,则会输出错误信息。无论状态如何,finally
函数都会被执行,控制台会输出 finally
。
总结
finally
函数是 ES9 中一个非常实用的特性,它可以在同步和异步函数中清理资源或者执行一些必须的操作。在实际开发中,我们可以使用 finally
函数来确保代码的正确性和健壮性。
参考资料
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65717852d2f5e1655da22e7c