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

来源:互联网  责任编辑:小易  时间:2017/5/26 22:58:41
本网有用户碰到这样的问题: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 © 2015 www.zgxue.com All Rights Reserved