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

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

幕布斯7119047
浏览 408回答 4
4回答

FFIVE

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

绝地无双

我要尽量让这件事简单明了。“回调”是由另一个函数调用的任何函数,该函数将第一个函数作为参数。在很多情况下,“回调”是在某物会发生的。那,那个某物可以被称为“事件”的程序员-说话。想象一下这样的场景:您期待几天后就会有一个包。这个包裹是送给你邻居的礼物。因此,一旦你得到了包裹,你就想把它带给邻居。你出城了,所以你给你的配偶留下指示。你可以告诉他们把包裹拿来给邻居。如果你的配偶像电脑一样笨,他们会坐在门口等包裹来(什么也不做),一旦它来了,他们就会把它带给邻居。但还有更好的办法。告诉你的配偶,一旦他们收到包裹,他们就应该把包裹送到邻居那里。然后,他们可以正常地生活,直到他们收到包裹。在我们的示例中,包的接收是“事件”,而将它带给邻居的是“回调”。你的配偶“运行”你的指示,只带包裹过来。什么时候包裹到了。好多了!这种想法在日常生活中是显而易见的,但计算机却没有同样的常识。考虑程序员通常如何写入文件: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用这种思维来获得一些真正的实践。
打开App,查看更多内容
随时随地看视频慕课网APP