如何让程序员在javascript中实现正确的回调

How to make a programmer implement the right callback in javascript?

本文关键字:实现 回调 javascript 程序员      更新时间:2023-09-26

我想知道是否可以向库用户显示函数需要一个回调,比如说有5个参数,其中3个是数组(例如)。或者换句话说,如何通知程序员不要搞砸回调参数?下面是一个代码示例:

function doSomething(someArray, callback) {
    var i = 0;
    for ( i = 0; i < someArray.length; i += 1) {
        callback(someArray[i]);
    }
}

程序员将如何发现他们的回调函数应该接受哪些参数?

Javascript没有参数的类型检查,您也无法对回调进行运行时检查,以查看它期望的参数。在运行时可以做的一件事是,您可以检查callback.length,看看它声明了多少个参数,它期望这些参数作为形式参数。函数不需要定义其形式参数,因为它也可以使用arguments对象来获取参数,但如果您想强制它们以某种方式编程,可以通过这种方式进行检查。请参阅此文档了解更多信息。

最好的选择是编写好的文档,让它绝对清楚(通常也使用示例代码)应该如何编写回调。

如果你想让你的库防弹一点,你可以捕捉回调中抛出的任何异常,并以适当的方式处理它们。

function doSomething(someArray, callback) {
    var i = 0;
    for ( i = 0; i < someArray.length; i += 1) {
        try {
            callback(someArray[i]);
        } catch(e) {
            // handle any exception in the callback
        }
    }
}

通过对其进行文档化。通常,文档化的约定与通过语言强制执行的合同一样有效。最多可以将单个对象传递给回调,并且该对象可以具有命名属性,例如

callback({'names':[], 'types':[], value:0, etc:[] })

这样一来,双方的代码都更容易得到良好的文档记录。