Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何重构js承诺链_Javascript_Refactoring_Ionic - Fatal编程技术网

Javascript 如何重构js承诺链

Javascript 如何重构js承诺链,javascript,refactoring,ionic,Javascript,Refactoring,Ionic,重构这一承诺链的好方法是什么?一定有更好的办法。。。但我似乎无法理解。Thx loginPromise.then(function() { loadConfigFirebase().then(function() { setupUserObj().then(function() { saveUserFirebase().then(function() {

重构这一承诺链的好方法是什么?一定有更好的办法。。。但我似乎无法理解。Thx

       loginPromise.then(function() {
            loadConfigFirebase().then(function() {
                setupUserObj().then(function() {
                    saveUserFirebase().then(function() {
                        loadUserFirebase().then(function() {
                            ionicUserIdentify().then(function() {
                                registerDeploy().then(function() {
                                    $ionicLoading.hide();
                                    q.resolve();
                                }).catch(function(err) {
                                    displayError(err)
                                })
                            }).catch(function(err) {
                                displayError(err)
                            })
                        }).catch(function(err) {
                            displayError(err)
                        })
                    }).catch(function(err) {
                        displayError(err)
                    })
                }).catch(function(err) {
                    displayError(err)
                })
            }).catch(function(err) {
                displayError(err)
            })
        }).catch(function(err) {
            displayError(err)
        })

我本来希望看到一个没有支持函数的重构,但它工作得很好,而且非常干净。ThanksI希望看到一个没有支持函数的重构,但它工作得很好,而且非常干净。ThanksI希望看到一个没有支持函数的重构,但它工作得很好,而且非常干净。ThanksI希望看到一个没有支持函数的重构,但它工作得很好,而且非常干净。谢谢
function chainPromise(promise, fns, errorFn){
    if(!fns.length){
        return;
    }

    promise.then(function(){
        var fn = fns.shift();

        chainPromise(fn(), fns, errorFn);
    }).catch(errorFn);
}

chainPromise(loginPromise, [
    loadConfigFirebase,
    setupUserObj,
    saveUserFirebase,
    loadUserFirebase,
    ionicUserIdentify,
    registerDeploy,
    function(){
        $ionicLoading.hide();
        q.resolve();
    }
], displayError);