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呢。
没法子.简单的法子是你可以在回调里讲结果赋值给beOrNoimgTo ,或者写个
function 干活(beOrNoimgTo ){}
把要做的事情写进去.然后在回调里调用
能给了例子吗,这样讲不不是很明白啊,(实现目标,在该函数传参并返回回调函数赋的值)
@角色互换:我不相信你照我说的做做不出来.
AppFrame.Http.Get(baiduurl, function(ret) { //为回调函数
if (ret.status == "402") {
du= "fukeyou";
return du;
}
else du= baiduurl;
return du;
})
}
试过了这方法返回undefined的
@角色互换: var du 也加上
@让我发会呆: 加上了 还一样的
因为网络请求是异步的,在还没有请求到数据时,函数就执行完了。
是呢
正常业务逻辑下,这种时候都是在回调函数中执行后续操作。。不是这种返回值的形式,如果非要这么写就写等待时间吧,setTimeout函数。。时间自己设置,时间过了如果有响应就继续,没响应就返回fukeyou。。其实是fuck
这不重要,设置时间也不可以的
感谢园友们的解答,我深受启发,这个问题已解决了。
废话不多说,上代码
函数:
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)
判断