相关疑难解决方法(0)

什么是明确的承诺构建反模式,我该如何避免它?

我编写的代码看起来像:

function getStuffDone(param) {           | function getStuffDone(param) {
    var d = Q.defer(); /* or $q.defer */ |     return new Promise(function(resolve, reject) {
    // or = new $.Deferred() etc.        |     // using a promise constructor
    myPromiseFn(param+1)                 |         myPromiseFn(param+1)
    .then(function(val) { /* or .done */ |         .then(function(val) {
        d.resolve(val);                  |             resolve(val);
    }).catch(function(err) { /* .fail */ |         }).catch(function(err) {
        d.reject(err);                   |             reject(err);
    });                                  |         });
    return d.promise; /* or promise() */ |     });
}                                        | }
Run Code Online (Sandbox Code Playgroud)

有人告诉我这个被称为" 延迟反模式 "或" Promise构造函数反模式 ",这个代码有什么不好,为什么这被称为 …

javascript promise q bluebird es6-promise

479
推荐指数
3
解决办法
7万
查看次数

angular ui-router:在解析中获取toState的$ state状态信息

更新:这应该可以在angular-ui-router中使用1.0.0alpha0.请参阅发行说明https://github.com/angular-ui/ui-router/releases/tag/1.0.0alpha0和问题https://github.com/angular-ui/ui-router/issues/1018 I创建.

在处理解决方案时,我想访问应用程序导航到使用角度ui-router的状态名称和其他属性.

原因是:我想在允许应用程序输入该页面之前异步加载一些用户数据(包括其访问权限).

目前这是不可能的,因为将$ state注入解决点指向您正在导航的状态,而不是您要导航到的状态.

我知道我可以:

  • 使用$ rootScope('$ stateChangeStart')在其他地方获取toState并将其保存在我的设置服务中.但我觉得它有点乱.
  • 硬编码状态进入决心,但我不想重复我的决心所有页面

我还在ui-router github上创建了一个问题(如果你有兴趣,请点击+1):https: //github.com/angular-ui/ui-router/issues/1018

到目前为止,这是我的代码.任何帮助赞赏!

.config(function($stateProvider) {

    $stateProvider.state('somePage', {
        // ..
        resolve: {
            userData: function($stateParams, $state, Settings) {
                return Settings.getUserData() // load user data asynchronously
                    .then(function (userData) {
                        console.log($stateParams);
                        console.log($state);
                        // Problem: $state still points to the state you're navigating away from
                    });
            }
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular-ui angular-ui-router

46
推荐指数
2
解决办法
1万
查看次数