原文链接:https://note.noxussj.top/?source=helloworld
什么是回调函数?
简单的来说,一个函数作为另外一个函数的参数,可以称为回调函数。这个理解其实不完全对,回调的意义根本没有体现出来,何为回调?也就是说一个函数你定义了,你没有马上的去调用它,而是交给了另外一个函数去调用,这才属于回调函数。
缺点 直接使用传统回调方式去完成复杂的异步流程,无法避免大量的回调函数嵌套,形成回调地狱。为了避免回调地狱的问题,CommonJS 社区提出了叫做 Promise 的规范,目的是为异步编程提供了一种更合理,更强大的统一解决方案。在 ES2015 中被标准化,成为语言规范。
基础案例
回调函数
1function foo(callback) { 2 setTimeout(() => { 3 callback() 4 }, 3000) 5} 6 7foo(function () { 8 console.log('这就是一个回调函数') 9 console.log('现在处于定义时,没有被直接调用') 10 console.log('我是被其他函数调用的,setTimeout 执行之后') 11})
回调地狱
1const getData = (url, fn) => { 2 fn(url + 'xiaoming') 3} 4 5getData('/url1', function (data) { 6 getData('/url2', function (data) { 7 getData('/url3', function (data) { 8 getData('/url4', function (data) { 9 getData('/url5', function (data) { 10 console.log(data) 11 }) 12 }) 13 }) 14 }) 15})
