为了账号安全,请及时绑定邮箱和手机立即绑定

如何用通俗易懂的英语解释回调?它们与调用一个函数和另一个函数有什么不同?

如何用通俗易懂的英语解释回调?它们与调用一个函数和另一个函数有什么不同?

如何用通俗易懂的英语解释回调?它们与调用一个函数和另一个函数有什么不同?如何用通俗易懂的英语解释回调?它们与调用函数的一个函数和另一个函数、从调用函数获取上下文的函数有什么不同?如何向新手程序员解释他们的能力?
查看完整描述

4 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

通常,应用程序需要根据其上下文/状态执行不同的功能。为此,我们使用一个变量来存储有关要调用的函数的信息。‪根据其需要,应用程序将使用要调用的函数的信息来设置该变量,并使用相同的变量调用该函数。

在javascript中,示例如下。在这里,我们使用方法参数作为一个变量来存储有关函数的信息。

function processArray(arr, callback) {
    var resultArr = new Array(); 
    for (var i = arr.length-1; i >= 0; i--)
        resultArr[i] = callback(arr[i]);
    return resultArr;
}

var arr = [1, 2, 3, 4];
var arrReturned = processArray(arr, function(arg) {return arg * -1;});
// arrReturned would be [-1, -2, -3, -4]


查看完整回答
反对 回复 2019-07-12
?
冉冉说

TA贡献1877条经验 获得超1个赞

我要尽量让这件事简单明了。“回调”是由另一个函数调用的任何函数,该函数将第一个函数作为参数。在很多情况下,“回调”是在某物会发生的。那,那个某物可以被称为“事件”的程序员-说话。

想象一下这样的场景:您期待几天后就会有一个包。这个包裹是送给你邻居的礼物。因此,一旦你得到了包裹,你就想把它带给邻居。你出城了,所以你给你的配偶留下指示。

你可以告诉他们把包裹拿来给邻居。如果你的配偶像电脑一样笨,他们会坐在门口等包裹来(什么也不做),一旦它来了,他们就会把它带给邻居。但还有更好的办法。告诉你的配偶,一旦他们收到包裹,他们就应该把包裹送到邻居那里。然后,他们可以正常地生活,直到他们收到包裹。

在我们的示例中,包的接收是“事件”,而将它带给邻居的是“回调”。你的配偶“运行”你的指示,只带包裹过来。什么时候包裹到了。好多了!

这种想法在日常生活中是显而易见的,但计算机却没有同样的常识。考虑程序员通常如何写入文件:

fileObject = open(file)
# now that we have WAITED for the file to open, we can write to it
fileObject.write("We are writing to the file.")
# now we can continue doing the other, totally unrelated things our program does

在这里,我们等待文件打开,然后再写到它。这个“阻塞”执行流程,而我们的程序不能做它可能需要做的任何其他事情!如果我们可以这样做呢:

# we pass writeToFile (A CALLBACK FUNCTION!) to the open function
fileObject = open(file, writeToFile)
# execution continues flowing -- we don't wait for the file to be opened
# ONCE the file is opened we write to it, but while we wait WE CAN DO OTHER THINGS!

事实证明,我们是用一些语言和框架来做到这一点的。太酷了!检查Node.js用这种思维来获得一些真正的实践。


查看完整回答
反对 回复 2019-07-12
  • 4 回答
  • 0 关注
  • 366 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信