【发布时间】:2015-05-18 10:18:14
【问题描述】:
我有两个关于 JavaScript 回调的问题。
首先:for 循环是否异步运行?也就是在函数中:
function postData(items, callback)
{
for(var i=0 ; i < items.length ; i++)
{
//angularjs Post request
$http.post("http://www....", item[i]);
}
callback();
}
callback() 会等到循环结束吗?
第二:如何等待两个函数的回调?
我有另一个函数deleteData(items, callback),我想与postData() 异步运行。当这两个完成后,我想做一些“刷新”。
目前我正在使用:
function postData(items, callback)
{
for(var i=0 ; i < items.length ; i++)
{
//angularjs Post request
$http.post("http://www....", item[i]);
}
callback();
}
function deleteData(items, callback)
{
for(var i=0 ; i < items.length ; i++)
{
//angularjs delete request
$http.delete("http://www....", item[i].id);
}
callback();
}
function refresh()
{
$http.get("www....").success....
}
function doit(post, delete)
{
postData(post, function(){
deleteData(delete, function(){
refresh();
})
});
}
是否可以让postData 和deleteData 异步运行,并在两者都完成后运行refresh?
----- 编辑-----
为了确保在循环完成后发送回调,我使用如下代码:
function postData(items, callback)
{
if(items.length == 0)
callback();
for(var i=0 ; i < items.length ; i++)
{
//angularjs Post request
$http.post("http://www....", item[i]);
if(i == items.length-1)
callback();
}
callback();
}
但它看起来很难看...我希望有一个更清洁的解决方案...
回复 Ivan,Angular 也回调了 http 请求,我不需要使用 $ajax 也不想为每个 http 请求回调
【问题讨论】:
标签: javascript callback