Promise - TypeError:无法读取未定义的属性'then'

Pau*_*dos 7 javascript promise angularjs

我想我只需要另外一双眼睛,因为我无法得到我在这里失踪的东西.

   $scope.checkout = function (form) {
        //some code here

        function checkoutErrorHandler(error) {
          //some code here
        }

        function displaySuccessMessage() {
            $scope.success = true;
            cartService.emptyCart();    
        }

        checkoutService.makePayment($scope.payment).then(function (i) {

            //some code here
            checkoutService.buyProducts($scope.payment, products, i).then(function () {
                    displaySuccessMessage().then(function(){
                        $scope.payment = {}; // clear checkout form
                        $scope.form.reset();
                    });
                    return displaySuccessMessage;
                },
                checkoutErrorHandler
            );
        }, checkoutErrorHandler);
    };
Run Code Online (Sandbox Code Playgroud)

当我调用displaySuccessMessage时,我得到"无法读取属性",然后是"未定义".我尝试过几种不同的重构方式,但无法让它发挥作用.有谁看到我的错误?

Sho*_*omz 3

你的displaySuccessMessage不回报承诺。事实上,它不会返回任何东西。

假设cartService.emptyCart()返回一个promise,你可以displaySuccessMessage这样修改,它应该可以正常工作:

    function displaySuccessMessage() {
        $scope.success = true;
        return cartService.emptyCart();
    }
Run Code Online (Sandbox Code Playgroud)