在对象

时间:2017-10-17 11:55:58

标签: javascript converter chaining

我有一个大的对象,基本上负责整个转换资金。

在这个对象中,我有4种方法。

addTaxAndShowBack()是我的"主要"方法,它执行其他作为链与某种回调地狱。

addTaxAndShowBack: function(priceField,selectedCurrency) {
    var that = this;
    var convertedToUSD = this.convertToUSD(priceField,selectedCurrency)
        .then(function(response) {
            console.log(response);
            var priceInUSD = response;
            that.addTax(priceInUSD,selectedCurrency)
                .then(function (response) {

                    console.log(response); // !!! THIS CONSOLE.LOG DOESN'T LOG ANYTHING

                }, function () {
                    console.log('error');
                });

        }, function (response) {
            console.log(response);
        });
},

首先执行的方法(convertedToUSD())工作正常,它将转换后的货币从用户默认货币返回到美元。第二个是addTax()并且它不会像我想要的那样返回值。 console.log(response)没有记录任何内容。 addTax方法的代码是:

addTax: function(priceInUSD, selectedCurrency) {
    var finalPriceInUSD;
    if(priceInUSD<300){
        // i should also store userPriceInUSD in some variable
        // maybe rootScope to send it to backend
        finalPriceInUSD = priceInUSD*1.05;
        console.log('after tax 5%: '+finalPriceInUSD);
        return finalPriceInUSD;
    } else {
        finalPriceInUSD = priceInUSD*1.03;
        console.log('after tax 3%: '+finalPriceInUSD);
        return finalPriceInUSD;
    }
},

我可能在addTax()做错了但是没有正确回复,或者没有在addTaxAndShowBack()中正确分配,我不知道这就是为什么我需要你的帮助

return finalPriceInUSD;这是第二次回调responseaddTaxAndShowBack()的内容。

1 个答案:

答案 0 :(得分:1)

你没有回复承诺。试试这个

addTax: function(priceInUSD, selectedCurrency) {
    var finalPriceInUSD;
    if(priceInUSD<300){
        // i should also store userPriceInUSD in some variable
        // maybe rootScope to send it to backend
        finalPriceInUSD = priceInUSD*1.05;
        console.log('after tax 5%: '+finalPriceInUSD);
        return new Promise(res => { res(finalPriceInUSD) });
    } else {
        finalPriceInUSD = priceInUSD*1.03;
        console.log('after tax 3%: '+finalPriceInUSD);
        return new Promise(res => { res(finalPriceInUSD) });
    }
},