Javascript-用函数(包括参数)替换回调
Javascript - Replace callback with function, including parameters
尽管Stackexchange Meta禁止我以"嗨,"开头,但我认为友好并没有什么实质性的害处。
你好,
我使用以下代码,
while (!success) {
new Magister(chosenSchool, username, password).ready(function(error){
/* Code here using the error variable above */
});
}
但JSLint警告我,在循环中定义函数是一种糟糕的做法
但是,使用以下代码也不起作用。
function checkLogin(error) {
/* Code here using the error variable above */
}
while (!success) {
new Magister(chosenSchool, username, password).ready(checkLogin(error));
}
这导致CCD_ 1。我怎么能不重新定义一个函数,但仍然像原来的function(error){...}
一样传递error
呢
我尝试了各种方法,但对我来说都不会改变
提前感谢!
只是不要调用函数:
new Magister(chosenSchool, username, password).ready(checkLogin);
ready
需要一个函数对象,所以必须传递chechLogin
本身,而不是调用它并传递它的返回值(很可能是undefined
)。
我怎么能不重新定义一个函数,但仍然像原来的
function(error){...}
一样传递error
呢?
也许这就是困惑所在。实际上,你根本没有通过error
。参数由调用方传递,调用方为Uncaught ReferenceError: error is not defined
0。
JavaScript的一个很好的特性是,您可以简单地用变量值的文字表示来替换变量(在大多数情况下)。
所以如果我们看看
new Magister(...).ready(checkLogin(error));
并用它的值(函数)代替checkLogin
,它就变成了
new Magister(...).ready(function checkLogin(error){...}(error));
然而,这看起来根本不像第一个版本!突然,在函数定义的末尾出现了一个狂野的(error)
。
让我们走另一条路:
new Magister(...).ready(function(error){...});
// becomes
new Magister(...).ready(function checkError(error){...});
// becomes
function checkError(error) { ... }
new Magister(...).ready(checkError);
好多了。
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- Javascript-用函数(包括参数)替换回调
- 原型回调函数替换'这'价值
- 在 Node.js 中用 promise 替换回调
- JavaScript:替换 ForEach 和匿名函数中的回调
- 字符串形式的正则表达式.替换为回调函数
- JavaScript中在回调之后替换动作的更好方法
- 用提示/回调UI替换正则表达式