Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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 在对象内的回调中将值从一个方法返回到第二个方法_Javascript_Converter_Chaining - Fatal编程技术网

Javascript 在对象内的回调中将值从一个方法返回到第二个方法

Javascript 在对象内的回调中将值从一个方法返回到第二个方法,javascript,converter,chaining,Javascript,Converter,Chaining,我有一个很大的目标,基本上是负责整个转换的钱 在这个对象中,我有4种方法 addTaxAndShowBack()是我的“main”方法,它将其他方法作为一个带有某种回调地狱的链来执行 addTaxAndShowBack: function(priceField,selectedCurrency) { var that = this; var convertedToUSD = this.convertToUSD(priceField,selectedCurrency)

我有一个很大的目标,基本上是负责整个转换的钱

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

addTaxAndShowBack()
是我的“main”方法,它将其他方法作为一个带有某种回调地狱的链来执行

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(响应)
不会记录任何内容。
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:函数(priceInUSD,selectedCurrency){
var finalPriceInUSD;

如果(priceInUSD您没有返回承诺,请尝试此操作

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) });
    }
},
addTax:函数(priceInUSD,selectedCurrency){
var finalPriceInUSD;
如果(价格{res(最终价格)});
}否则{
最终价格=价格标准*1.03;
console.log('税后3%:'+最终定价);
返回新承诺(res=>{res(finalPriceInUSD)});
}
},