我想知道是否有可能向库用户显示函数需要回调,比如5个参数,其中3个是数组(例如)。 或者换句话说,如何通知程序员不要搞砸回调参数? 这是一个代码示例:
function doSomething(someArray, callback) {
var i = 0;
for ( i = 0; i < someArray.length; i += 1) {
callback(someArray[i]);
}
}
程序员如何找出他们的回调函数应该接受哪些参数?
答案 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:[] })
通过这种方式,可以更好地记录双方代码。