什么是 calls
calls
是一个 npm 包,它提供了一种简单而优雅的方式来处理函数调用的异常情况。它是由 Richard Rodger 开发的。
在 JavaScript 中,当一个函数出现异常时,往往会使程序停止运行。这可能会导致应用程序的崩溃或不良的用户体验。calls
指定了一种另一种方式,即在函数执行失败的情况下,它以捕获错误、记录错误并清理资源的方式来停止函数的进程。
通过使用calls
,您可以放心地编写函数代码,并在运行时保持稳定。在今天的世界中,稳定性和健壮性是一个成功的应用程序的关键因素。
如何使用 calls
安装
要安装calls,请使用以下 npm 命令:
npm install calls
调用一个函数
调用一个函数需要两个参数:
fn
:被调用函数。args
:函数的参数数组。
如果您需要处理异步函数,则fn
必须使用 Node 风格的回调函数(即第一个参数为错误对象)。这是一个简单的栗子:
-- -------------------- ---- ------- --- ----- - ----------------- -------- --------------------- ----- --------- - -- ---- ----- ---- ---- - ---------------------- ------ ------ -------- ----- ------- - -- ----- - -- ------ ----- - ---- - -- ------ ------- - ---
对于同步函数,可以简单地传递函数和参数列表:
var calls = require("calls"); function mySyncFunction(arg1, arg2) { // some sync code here } calls(mySyncFunction, [arg1, arg2]);
如果函数被成功执行,函数的返回值将会在回调函数的result
参数传递。如果函数执行失败,则错误消息将在err
参数中传递。
指定重试策略
您可以指定重试函数调用的策略。calls
使用了 node-retry 库,因此您可以使用与其相同的设置选项。
要指定重试的策略,请向options
对象中添加以下属性:
retries
:默认值为 5。表示最大重试次数。factor
:默认值为 2。每次重试之间的时间因子(默认情况下,时间延迟为2倍)。minTimeout
:默认值为 1000。第一次重试之前的时间延迟(以毫秒为单位)。maxTimeout
:默认值为 Infinity。最长等待时间(以毫秒为单位)。randomize
:默认值为 false。设置为 true 可以在每次重试时添加一些随机化。
以下是一个使用指定重试策略的栗子:
-- -------------------- ---- ------- --- ----- - ----------------- -- ---- -- --------------- --------- ---- --- ------- ---- -- --- ------- - - -------- --- ------- -- ----------- ----- ----------- ---- -- ---------------------- ------ ------ -------- -------- ----- ------- - -- ----- - -- ------ ----- - ---- - -- ------ ------- - ---
请注意,如果您忽略options
参数,则不会应用任何重试策略。
指定超时时间
您可以使用timeout
参数设置重试运行的最长时间(以毫秒为单位)。如果函数在指定时间内未完成,则将停止执行并返回错误。
以下是如何使用timeout
参数的示例:
-- -------------------- ---- ------- --- ----- - ----------------- -- ---- ---- -- --- --- ------- - ----- ---------------------- ------ ------ --------- --------- -------- ----- ------- - -- ----- - -- ------ ----- - ---- - -- ------ ------- - ---
指定一个 logger
您可以使用自定义logger指定在记录错误时包含有用信息的策略。默认情况下,calls
使用console.log函数记录错误。如果您需要将错误记录到其他地方(例如你的日志文件),则可以定义一个自定义logger并将其传递给options
参数。
下面是如何使用自定义logger的示例:
-- -------------------- ---- ------- --- ----- - ----------------- -------- ------------- ----- ----- - -- ------------ - --- ------- - - ------- -------- -- ---------------------- ------ ------ -------- -------- ----- ------- - -- ----- - -- ------ ----- - ---- - -- ------ ------- - ---
在上面的代码中,myLogger
函数将被调用以记录发生的错误、函数名称和函数参数。
总结
在JavaScript开发中,处理函数调用的异常情况非常重要。npackage包 calls 是一个非常有用、简单而优雅的解决方案,使您可以保持稳定,并让您的代码更加健壮。
在本教程中,我们介绍了如何使用 calls,包括如何调用函数、指定重试策略、指定超时时间和自定义日志记录器。
请您自己动手试一试吧!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055c9c81e8991b448da001