在我的angularjs应用程序中,我有以下代码:
handleRoutingErrors();
if ($rootRouter._currentInstruction !== null) {
currentRouteData = makeRouteData($rootRouter._currentInstruction);
breadcrumb.push(currentRouteData);
}
handleRoutingErrors
函数包含xhr调用,因此,此函数的代码将首先执行,我希望只有handleRoutingErrors
完成XHR调用才能执行以下代码。
如果我将其他代码移到handleRoutingErrors
函数中,并且只在我调用promise的then
函数时执行它,但有一个解决方案,但我不想要把它移到函数内部。
我该如何解决这个问题?
handleRoutingErrors
并不总是称之为承诺:
function handleRoutingErrors() {
...
if (...) {
process().then(function(data) {
...
});
}else{
//None async code
}
}
答案 0 :(得分:3)
您应该将handleRoutingErrors()
更改为始终返回承诺。如果它不执行任何异步操作,只需添加return Promise.resolve()
即可返回已解决的承诺。
然后,您可以在调用时添加.then()
。