从承诺中调用方法

时间:2017-09-04 10:53:23

标签: javascript this chaining

你好我有一个包含很少方法的对象。在其中一个中,我使用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方法(在同一个对象中),但是Directory.Exists(@"C:\Program Files\MyDirectory")关键字没有&# 39;在这种情况下按预期工作,那么我怎么能在这一点上开始另一种方法呢?而不那么重要的问题 - 这就是我所做的命名链接吗?

1 个答案:

答案 0 :(得分:0)

你可以存储其中的上下文,然后使用这个新的变量 来执行操作

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);
            };
        });

    },