这是JavaScript/jQuery回调的正确方式吗
Is this a correct way of JavaScript/jQuery callback?
这是一个简单的问题。这是我的代码:
$(document).ready( function () {
func1( "foo", callback);
function callback(param){
alert(param+" is my name");
}
function func1(name, cb) {
cb(name); // alerts "foo is my name"
callback("bar"); // alerts "bar is my name"
}
});
我想知道:
func1
内部的哪个函数调用是正确的callback
,为什么- 或者它们都是正确的
callback("bar");
不是一个正常的函数调用吗
回调旨在让调用者指定函数在执行过程中的某个定义点应该做什么。被调用的函数不应该提前知道回调函数的名称。因此,它们通常会作为参数传递给函数,而应该调用回调的函数应该只调用该参数。
当您在func1
中调用callback("bar")
时,您完全错过了回调的要点。您可能正在调用碰巧用作回调的函数,但回调的意义在于func1
不应该知道这一点。它只需要调用作为参数传入的函数(cb
)。当我调用func1
时,我应该能够传递一个完全不同的回调函数,而func1
应该只调用该函数,而不知道它的名称(它甚至可能没有!)。
"正确"的方式是cb(name)
。
callback("bar");
直接调用回调函数,当cb(name);
调用传递给func1
的引用时,
cb(name);
似乎是正确的方式。
第一个。函数调用另一个已作为参数pased的函数。
似乎大多数jquery方法都遵循以下形式进行回调:
$(SUBJECT).method(function() {
//do stuff
}, /*callback here*/ function(){
//do stuff
});
比如
$(foo).click(function() {
$(bar).fadeIn(300, function(){
//call back here
});
});
小提琴
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 不同'单击'不同脚本中的回调:我可以控制执行顺序吗
- 在Nodejs中堆叠异步回调事件的最佳方式
- 当使用命名函数作为jquery ajax成功回调时,我需要括号吗
- 我可以在javascript中的回调函数中为变量赋值吗
- 在这里使用回调函数(JavaScript)有什么好处吗
- Promise.每个在蓝鸟都有某种所有操作完成的回调吗?
- 客户端如何知道发射是否失败?socket.emit()有回调吗
- 在JavaScript中,从主线程和回调中调用函数是一种好的风格吗
- 什么's传递对象的最佳或最常见方式'的方法作为回调
- 一个Javascript回调模式示例 - 它真的更有效吗?
- 以正确的方式获取主干回调
- 在 JavaScript 中,我应该使用带有回调的 return 吗?
- 我可以通过回调添加getJSON的done()函数吗?
- 我需要使用回调吗?
- 我可以将 $(this) 传递给 .getJSON 回调函数吗?任何解决方法
- 带量角器的黄瓜需要回调吗?
- 代码点火器文件上传 - 可以使用回调吗?(v2)
- 这真的是从事件回调中获取 Rx.Observable 的最佳方式吗?
- 这是JavaScript/jQuery回调的正确方式吗