Javascript中的回调函数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014465934/article/details/85048805

参考文章:https://www.zhihu.com/question/19801131/answer/91780287

A “callback” is any function that is called by another function which takes the first function as a parameter. (在一个函数中调用另外一个函数就是callback)

function callback() {
    alert("I am in the callback!");
}

function work(func) {
    alert("I am calling the callback!");
    func(); 
}

work(callback);

这就是一个很简单的callback
callback 作为一个变量传入函数work 中 在work 中被调用

然后来说一下callback经常的使用场景:
A lot of the time, a “callback” is a function that is called when something happens. That something can be called an “event” in programmer-speak.(很多时候 callback 都是用来执行事件驱动的任务 比如有货了通知我 | 你到家了再叫我做饭 等等之类的 )

举个简单的例子 对一个文件的读入
如果不用callback

fileObject = open(file)
#我们必须等到文件打开才能进行读入 在这之前我们不能做其他事情
fileObject.write("We are writing to the file.")

使用callback

# 我们把writeToFile 为一个function 传入open writeToFile就是一个callback function
fileObject = open(file, writeToFile)
# 我们不需要一直等着这个文件打开
# 文件打开的时候 他就会执行callback 也就是writeToFile(具体实现 可以用promise) 在这之前我们可以做其他事情

注:使用回调时候,我们把open和write写在了一起,这样就不用等open完再调用write了,这样我们就省去一步,open完就回调write。所以我们在open的时候就可以去做另外的事,比如open第二本书,因为open第一本书的时候,我们会自动回调write。

另一个角度思考,回调函数可以帮我们确保某些代码执行顺序,某些代码直到另一些代码已经执行完毕才执行。

完整实例代码:

function openFile(filePath,callback){
    alert('start opening file in'+filePath);
    callback();//when finished,execute callback()
}

function writeToFile(){
    alert('i'm now writing file');
}

openFile('c://test.csv',writeToFile);

猜你喜欢

转载自blog.csdn.net/u014465934/article/details/85048805