在使用angular完成ajax调用之后,我该如何处理?
请参阅此代码:
$http({
method: 'GET',
url: myUrl + myData
}).
success(function (data) {
doStuff(data);
}).
error(function (data) {
doStuff(data);
});
alert("do not alert me before running doStuff()");
我想在警告之前运行doStuff
答案 0 :(得分:1)
如果doStuff是同步的(在它返回之前阻塞下一行):
$http({
method: 'GET',
url: myUrl + myData
}).
success(function (data) {
doStuff(data);
alert("do not alert me before running doStuff()");
}).
error(function (data) {
doStuff(data);
alert("do not alert me before running doStuff()");
});
如果doStuff是异步的(在函数返回之前执行下一行),则需要使用回调:
function doStuff(data, callback) {
...do the stuff here...
callback(); // Run the callback
}
function myAlertFunc() {
alert("do not alert me before running doStuff()");
}
$http({
method: 'GET',
url: myUrl + myData
}).
success(function (data) {
doStuff(data, myAlertFunc);
}).
error(function (data) {
doStuff(data, myAlertFunc);
});
答案 1 :(得分:1)
您可能希望最后使用' ':
http({
method: 'GET',
url: myUrl + myData
}).
success(function (data) {
doStuff(data);
}).
error(function (data) {
doStuff(data);
}).
finally(function(data){
alert("do not alert me before running doStuff()");
});
然而'终于'是javascript中的保留字,这将在ie8上中断,因此使用它的更兼容的方式是使用括号表示法调用它
http({
method: 'GET',
url: myUrl + myData
}).
success(function(data){
doStuff();
})
['finally'](function(data){
doOtherStuff();
});
// note that there is no dot before ['finally']
查看有关角度的Promises Api的官方文档,了解更多信息:https://docs.angularjs.org/api/ng/service/ $ q