有些情况下我们很难区分各种回调选项(记住,Javascript 是不支持函数重载的)。例如:
Remote.method({ timeout:3 }, { errorHandler:somefunc });
这两个参数之一是 bean 的参数,另一个是元数据对象,但是我们不能清楚的告诉 DWR 哪个是哪个。为了
可以跨浏览器,我们假定 null == undefined。 所以当前的情况,规则是:
- 如果第一个或最后一个是一个函数,那么它就是回调函数,没有元数据对象,并且其他参数都是 Java
的方法参数。 - 另外,如果最后一个参数是一个对象,这个对象中有一个 callback 成员,并且它是个函数,那么这个
对象就是元数据对象,其他的都是 Java 方法参数。 - 另外,如果第一个参数是 null ,我们就假设没有回调函数,并且其他的都是 Java 方法参数。尽管如
此,我们会检查最后一个参数是不是 null,如果是就发出警告。 - 最后如果最后一个参数是 null,那么就没有 callback 函数。
- 另外,发出错误信号是个糟糕的请求格式。