javascript - 如果 ui-router 解析的一部分返回 true 或 promise ,我该如何编写代码?

标签 javascript angularjs typescript angular-ui-router

这是我的代码:

resolve: {
            get: ['setTest', 'questionService', 'testService', '$stateParams',
                (setTest, qus: IQuestionService, tes: ITestService, $stateParams) => {
                    if (tes.qs) {
                        qus.mapUserTestQuestions(tes.qs);
                        return true;
                    } else {
                        var userTestId = parseInt($stateParams.testId.substring(6, 11));
                        return qus.getUserTestQuestions(userTestId);
                    }
                }]
        },

问题是我收到一条消息说“没有通用返回类型”,我猜这是因为 if 的一部分返回 true,另一部分返回 promise 。

最佳答案

在大多数情况下,应该有比同步返回 bool 值与 promise 某些问题更好的解决方案。这也会导致 Controller 上出现更多可能可以避免的决策逻辑。

看来在第一种情况下,您已经拥有所需的数据,并且不需要执行任何异步调用。那么为什么不通过 Promise 返回这个(同步)转换后的数据(假设 mapUserTestQuestionsgetUserTestQuestions 的结果是相同的类型。如果是这样,只需使用$q 服务如下所示:

return $q.when(qus.mapUserTestQuestions(tes.qs));

这样您就可以以相同的方式访问数据,无论数据是否已经存在或者您需要执行一些异步调用。对于 $q 请参阅:https://docs.angularjs.org/api/ng/service/ $q#when

关于javascript - 如果 ui-router 解析的一部分返回 true 或 promise ,我该如何编写代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35730322/

相关文章:

javascript - 动态加载 Angular Controller

php - Google Chrome 无需主动请求即可刷新

javascript - 记住 AngularJS 中选项卡之间的计数

javascript - Angularjs UI 多选和初始选择

intellij-idea - IntelliJ IDEA 报告未解析的变量 TypeScript 错误,但不允许 ':any'

javascript - Typescript 更新对象内的项目

javascript - 如何使用 Rollup 将本地 typescript 文件捆绑到主包中

javascript - 在 Redmine 插件中包含 jquery

javascript - 如何等待 Canvas 上的点击

javascript - Angular Binding 不适用于 HTML 中的选择框