从承诺中调用方法
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);
};
});
},
您好,我有一个包含几个方法的对象。在其中一个中,我使用 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);
};
});
},