分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 软件开发

js回调函数

发布时间:2023-09-06 02:11责任编辑:白小东关键词:js回调函数

js回调函数(第二周)


 

什么是回调函数

在JavaScript中一个函数可以作为另一个函数的参数,这个作为参数的函数就叫回调函数,以回调函数作为参数的函数叫做主函数

 

回调函数简单写法

//含有回调函数的函数
function main(callback){
…………//主函数逻辑
callback(a,b,c……)// 主函数触发某种条件传值到回调函数并执行
}
//调用
main(function callback(a,b,c……){
………………//回调函数中逻辑处理
})


 

回调函数场景运用

场景:我今年18岁,准备找个女朋友,有三个人选(姑娘A、B、C),我表白之后姑娘都会过一段时间给我回复;我最喜欢A姑娘,不过我不知A姑娘是不是也喜欢我,表白成功率为0.4,我次之喜欢B姑娘,表白成功率为0.5,我知道姑娘C很喜欢我,表白成率为1,那么问题来了,谁会成为我最终的女票呢?

场景模拟:用Math.randowm()生成一个[0,1)之间的一个随机数,如果这个随机数小与scale(scale可以表示表白成功的概率),则表示我表白成功了,用setTimeout(),延时1000ms,表示姑娘们需要这么长时间给我回复

用Java习惯实现:

 

function getAmie(woman,scale){//woman我表白的姑娘 scale 表白成功的概率 ???let temp = Math.random(); ???console.log(temp); ???if(temp<scale){ ???????console.log(`${woman}答应做我女朋友`); ???????temp = woman; ???}else{ ???????console.log(`${woman}对我说你是个好人`); ???????temp = false; ???} ???setTimeout(() => { ???????return temp; ???}, 1000);}//调用方法,计算谁最终成为我的女朋友if(!getAmie("姑娘A",0.5)){ ???if(!getAmie("姑娘B",1)){ ???}else{ ???console.log("最终姑娘B成为了我的女朋友"); ???}}else{ ???console.log("最终姑娘A成为了我的女朋友");}

然而你会发现执行结果是这样的:

没错这个确实不是我们想要的,因为JavaScript是单线程的,不会等到一个函数执行完才会去执行另一个函数,所以用这种方式写是不行的,用回调方式实现乳腺:

 

function getAmie(woman,scale,callback){//woman我表白的姑娘 scale 表白成功的概率 callback回调函数,callback参数为姑娘名时表示表白成功,为false表示获得好人证一张 ??let temp = Math.random(); ???console.log(temp); ???if(temp<scale){ ???????console.log(`${woman}答应做我女朋友`); ???????temp = woman; ???}else{ ???????console.log(`${woman}对我说你是个好人`); ???????temp = false; ???} ???setTimeout(() => { ???????callback(temp); ???}, 1000);}//调用方法,计算谁最终成为我的女朋友getAmie("姑娘A",0.4,(temp) => { ???if(temp){ ???????console.log("最终姑娘A成为了我的女朋友"); ???????return; ???}else{ ???????getAmie("姑娘B",0.5,(temp) => { ???????????if(temp){ ???????????????console.log("最终姑娘B成为了我的女朋友"); ???????????????return; ???????????}else{ ???????????????getAmie("姑娘C",1,(temp) => { ???????????????????if(temp){ ?????????????????????console.log("最终姑娘C成为了我的女朋友"); ???????????????????}else{ ???????????????????????return; ???????????????????} ???????????????}) ???????????} ???????}) ???}})

看效果,刷新了几次

<完>
20180803

发挥不广泛

js回调函数

原文地址:https://www.cnblogs.com/fahuibuguangfan/p/9508946.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved