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

时间:2012-09-09 17:43:47

标签: javascript callback libraries

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

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

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

2 个答案:

答案 0 :(得分:3)

Javascript没有对参数进行类型检查,并且您无法对回调进行运行时检查以查看它所期望的参数。您可以在运行时执行的一件事是,您可以检查callback.length以查看它已声明有多少参数正在作为形式参数。函数不需要定义它的形式参数,因为它也可以使用arguments对象来获取参数,但是如果你想强制它们以某种方式编程,你可以这样检查它。有关详细信息,请参阅this doc

您最好的选择是提供良好的文档,以便清楚地表明(通常还有示例代码)应该如何编写回调。

如果你想对你的库进行一些防范,你可以捕获回调中抛出的任何异常并处理它们,但这是合适的。

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
        }
    }
}

答案 1 :(得分:1)

记录它。通常记录的惯例与通过语言签订强制合同一样好。您最多可以将单个对象传递给回调,并且该对象可以具有命名属性,例如。

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

通过这种方式,可以更好地记录双方代码。