【发布时间】:2016-09-25 04:31:06
【问题描述】:
我有点困惑,不是关于回调的用途,而是因为我看到回调经常用于似乎不需要将函数作为参数传递给另一个函数的场景,因为您可以调用该函数您希望在当前函数中的代码执行完毕后调用。例如:
function hello( a , b ) {
var result = a + b;
myFunction();
}
myFunction() {
//code
}
hello(1,2);
令人困惑的是,我见过很多在场景中使用回调的示例,就像我编写的第一个代码一样简单,在我看来根本不需要回调:
function hello(a, b, callback) {
var result = a + b;
callback();
}
myFunction() {
//code
}
hello(1, 2, myFunction);
我在那里使用了回调,但我可以在代码执行后调用函数myFunction,而不将myFunction 作为参数传递。我知道框架或库不知道代码执行完成后要调用的函数的名称,因此将稍后要调用的函数作为参数传递似乎是有意义的,但是当您知道函数的名称时你想在函数中执行任何代码之后调用它,为什么不像我在我给出的第一个示例中那样调用它呢?我会很感激你的帮助。谢谢
【问题讨论】:
-
如果它与您发布的代码完全一样(添加a+b)那么当然没有理由。但有时函数会异步执行某些操作(例如进行 ajax 调用),并且您希望函数等到 ajax 调用完成。 (比如当你希望回调作用于你收到的数据时)
-
您能举一个您认为没有必要的回调示例吗?回调通常用于异步函数。
-
现在讲的是同步性,但是知识:调用者通常不知道该调用什么;或范围 - 调用者在不同的范围中定义。
-
有趣的地方通常不是函数被调用的地方,而是a) 当它被调用(通常不是紧跟在函数返回) 和 b) 调用它的参数是什么
-
也许this 会帮助你..
标签: javascript