$ .ajax回调函数在另一个函数内
我有一个函数,当我的自定义控件加载时会被调用。请参考下面的代码。
function load()
{
getdata();
}
function getdata()
{
$. ajax({
url://remote url,
type:"get",
success:function(data)
{
//going to set the data to my control
}
});
}
如此成功的回调函数需要一段时间才能恢复“数据”(即获取远程URL数据),但负载()客户端的方法被完成,并尽我们的控制渲染。所以我想load()方法需要等到成功函数从远程URL返回数据,然后load()函数完成,然后我将根据数据呈现我们的控件。
如何做load()函数需要等待回调完成。
感谢,
湿婆
1)将客户端绘制代码的成功处理程序的内部...
2)分离成另一种方法,并呼吁从成功处理程序。
这两种方法都将解决您的加载函数完成问题,并导致您的UI在数据返回之前呈现。
这是你给出的两个完全有效的答案,你已经评论过相同的东西。我冒昧地说,我会采取倒退,只是为了表明你无缘无故拒绝有效的答案。您的规格充其量只是参差不齐,并且您的要求已经填满。如果你告诉我为什么这是一个不好的答案,我会删除这个。 – 2013-05-08 17:24:27
甚至这个答案:http://stackoverflow.com/a/16446618/1257652几乎说我是确切的东西。所以,要么你不够具体,或者你需要重新提出你的问题。 – 2013-05-08 17:26:02
@SivaRajini要么你要求澄清或解释为什么这个解决方案不适合你。只是在哭“糟糕的解决方案”并不能帮助任何人给你一个更好的答案。 – JJJ 2013-05-08 17:31:49
您可以创建负载()这样的回调函数..
function load()
{
getdata(function(data){
alert('done')
// do something with data
});
}
function getdata(cb)
{
$. ajax({
url:"..",
type:"get",
success:function(data)
{
//send data back to load
cb(data);
}
});
}
load();
我如何发回数据加载到这里。 – SivaRajini 2013-05-08 17:46:35
??一旦ajax返回成功,它将'数据'传递给由加载函数传递给它的回调函数。在另一个答案中看看评论。 – ZimSystem 2013-05-08 17:52:29
直接回答你的问题是,你要异步添加:假到AJAX请求,让浏览器等待请求完成。实际上,您希望以不需要这样做的方式构建您的应用程序,因为您正在与JavaScript的基于事件的本质以及AJAX的美妙作斗争,因为您希望它适合您的代码。 – 2013-05-08 17:10:37
感谢您的答复。将检查 – SivaRajini 2013-05-08 17:22:17
没有办法使函数x等待函数y在返回之前完成。 – 2013-05-08 17:42:00