数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类全部分类技术牛文全部分类教程最新网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销开发数据库服务器系统虚拟化云计算嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

js回调函数异步执行问题(在线等急)

来源:互联网  责任编辑:小易  时间:2018/1/19 19:38:10
本网有用户碰到这样的问题:js回调函数异步执行问题(在线等急),具体问题如下:

var beOrNoimgTo = function(baiduurl) {
var du;
AppFrame.Http.Get(baiduurl, function(ret) { //为回调函数
if (ret.status == "402") {
du= "fukeyou";
}
else du= baiduurl;
})

return du;
}

代码是上面这样的

目前的问题是调用beOrNoimgTo 函数,AppFrame.Http.Get函数没执行完就return了。

那么如何让AppFrame.Http.Get执行完了以后再return呢。

本网根据需求用户需求,为用户寻得以下其他网友提供的解决方法,方法仅供参考,具体如下:

用户提供的解决方案1:

没法子.简单的法子是你可以在回调里讲结果赋值给beOrNoimgTo ,或者写个

function 干活(beOrNoimgTo?){}

把要做的事情写进去.然后在回调里调用

用户提供的解决方案2:

AppFrame.Http.Get(baiduurl, function(ret) { //为回调函数
if (ret.status == "402") {
du= "fukeyou";

return du;
}
else du= baiduurl;

return du;
})
}

试过了这方法返回undefined的?

@角色互换:?var du 也加上

@让我发会呆: 加上了 还一样的

用户提供的解决方案3:

因为网络请求是异步的,在还没有请求到数据时,函数就执行完了。

是呢

用户提供的解决方案4:

?正常业务逻辑下,这种时候都是在回调函数中执行后续操作。。不是这种返回值的形式,如果非要这么写就写等待时间吧,setTimeout函数。。时间自己设置,时间过了如果有响应就继续,没响应就返回fukeyou。。其实是fuck

这不重要,设置时间也不可以的

用户提供的解决方案5:

?感谢园友们的解答,我深受启发,这个问题已解决了。

废话不多说,上代码

函数:

var beOrNoImg = function(baiduUrl, CB) {
var imgUrl;
AppFrame.Http.Get(baiduUrl, function(ret) {
if (ret.status == "402") {
imgUrl = "";
} else
imgUrl = baiduUrl;
if (CB)
CB(imgUrl);
})
}

调用:

beOrNoImg(picturel, function(imgUrl) {
model.P_Img = imgUrl;
})

解释:

先请求完picturel,然后在回调。这必须在函数里面加

if (CB)
CB(imgUrl)

判断


  • 本文相关:
  • 站长必读,如何真正写好一篇原创文章
  • 互联网之路细嗅蔷薇 资深站长分享掘金之道
  • 企业站的站长的工作重心究竟有哪些
  • 浅析:行业门户网站的一些盈利模式
  • 3000IP的企业网站每天订单不到30个的苦恼
  • 网站想内外兼修?先学习提高网站可用性的6大原则
  • 浅谈网页设计中的简约之美
  • 网页改版实战:日本设计师如何彻底优化旅游网站?
  • 网页改版实战!日本设计师如何彻底优化招聘网站?
  • 2015年值得关注的21个网页设计趋势
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved