javascript中callback的使用

javascript中callback的使用

callback 是一种特殊的函数,这个函数被作为参数传给另一个函数去调用,这样的函数就是回调函数。回调,顾名思义,回头再调。回调与同步、异步并没有直接的联系,回调只是一种实现方式,既可以有同步回调,也可以有异步回调,还可以有事件处理回调和延迟函数回调。

一、最简单的例子

// 判断奇数
function isOdd(num){ return num % 2 }
const arr = [2,3,4,5,7,8]
console.log( arr.filter(isOdd) )

这里是把isOdd函数当成参数进行传递执行

二、同步任务

const url = "https://www.baidu.com/pic/1.png"

function download(url){
	console.log("正在下载图片:",url)
}

function process(url){
	console.log("正在处理图片:",url)
}

// 这里如果要先下载完,才能处理
download(url)
process(url)

如果下载的时候过长,发生异步,如何控制顺序?

三、异步回调(顺序执行)

const url = "https://www.baidu.com/pic/1.png"

function download(url ,callback){
	setTimeout(()=>{
			console.log("正在下载图片:",url)
			callback(url)
	}	,2000)
}

function process(url){
	console.log("正在处理图片:",url)
}

// 这样就可以控制顺序了
download( url,process )

四、系统应用

// 消息确定和取消的弹窗
Vue.prototype.$baseConfirm = (content, title = undefined, callback1 = undefined, callback2 = undefined, confirmButtonText = '确定', cancelButtonText = '取消') => {
 MessageBox.confirm(content, title || '提示', {
   confirmButtonText,
   cancelButtonText,
   closeOnClickModal: false,
   type: 'warning',
   lockScroll: false,
 })
   .then(() => {
     if (callback1) { // 执行确定的回调
       callback1()
     }
   })
   .catch(() => {
     if (callback2) {  // 执行取消的回调
       callback2()
     }
   })
}

总结

callback比适合简单异步的方式,更多地用来简化代码,如果异步任务(超过3个)比较多,则仍然推荐使用promise,async/await等来解决更为高效

回答: 在JavaScript,回调函数是一种常见的编程模式,用于在某个操作完成后执行特定的代码。回调函数通常作为参数传递给其他函数,并在需要时被调用。在引用\[1\]的示例,回调函数被用作add函数的参数,并在add函数内部执行。在这个例子,回调函数被用来处理add函数的结果。同样,在引用\[2\]和\[3\]的示例,回调函数也被用作父函数的参数,并在父函数内部执行。回调函数可以接收参数,并在需要时使用这些参数进行操作。通过使用回调函数,我们可以实现异步操作,处理事件和执行其他需要在操作完成后执行的代码。 #### 引用[.reference_title] - *1* [JS的 回调函数(callback)](https://blog.csdn.net/weixin_47075145/article/details/125752446)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [JS回调函数(callback)理解](https://blog.csdn.net/UnderIcon/article/details/81188923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值