首先执行一个调用promise的函数

时间:2018-01-25 17:01:47

标签: javascript angularjs

在我的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
    }
}

1 个答案:

答案 0 :(得分:3)

您应该将handleRoutingErrors()更改为始终返回承诺。如果它不执行任何异步操作,只需添加return Promise.resolve()即可返回已解决的承诺。

然后,您可以在调用时添加.then()