从承诺中调用方法

Calling method from promise

您好,我有一个包含几个方法的对象。在其中一个中,我使用 promise 执行另一个,我使用 .then 从中检索一些数据。

.then 中,我的 this 关键字发生了变化,我不知道如何从这一点再次调用另一个方法。

所以我写的方法是:

    convertToUSD: function(selectedCurrency,priceField) {
        var priceField = priceField;
        var selectedCurrency = selectedCurrency;

        console.log('selectedCurrency in service: '+selectedCurrency);
        console.log('priceField in service: '+priceField);

        var currentCurrency = this.getRatio(selectedCurrency);
        currentCurrency.then(function(response) {
            console.log(response);
            console.log('to USD: '+response.toUSD);
            if(response.toUSD !== undefined){
                var userPriceInUSD = priceField*response.toUSD;
                console.log(userPriceInUSD);
                this.addTax(userPriceInUSD);
            };
        });

    },

if() 语句中我正在做一个简单的计算然后我想将结果传递给 addTax() 方法(在同一个对象中)但是 this 关键字没有在这种情况下没有按预期工作,那么此时我该如何启动另一个方法呢?还有一个不太重要的问题 - 这就是我正在做的命名链接吗?

你可以把 this 的上下文存入 that,然后使用这个新变量 that 来做操作

convertToUSD: function(selectedCurrency,priceField) {
        var priceField = priceField;
        var selectedCurrency = selectedCurrency;

        console.log('selectedCurrency in service: '+selectedCurrency);
        console.log('priceField in service: '+priceField);
        var that = this; // this stores the context of this in that
        var currentCurrency = this.getRatio(selectedCurrency);
        currentCurrency.then(function(response) {
            console.log(response);
            console.log('to USD: '+response.toUSD);
            if(response.toUSD !== undefined){
                var userPriceInUSD = priceField*response.toUSD;
                console.log(userPriceInUSD);
                that.addTax(userPriceInUSD);
            };
        });

    },