0

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

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

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

4

2 回答 2

3

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
        }
    }
}
于 2012-09-09T17:46:54.417 回答
1

By documenting it. Usually documented convention works as good as having a enforced contract via language. At-most you can pass a single object to callbacks and that object can have named attributes e.g.

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

That way it is more easy for both side code to be well documented.

于 2012-09-09T17:50:44.013 回答