在对象内的回调中将值从一个方法返回到第二个
Returning value from one method to second in callback within object
我有一个大对象,基本上负责整个转换钱。
在这个对象中我有 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()
) 工作正常,returns 将货币从用户默认货币转换为美元。第二个是 addTax()
,它没有 return 值我想要的值。 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()
中做错了 return 或在 addTaxAndShowBack()
中没有正确分配我不知道,这就是为什么我需要你的帮助。
return finalPriceInUSD;
这就是第二次回调中 addTaxAndShowBack()
中的 response
应该是什么。
您没有返回承诺。试试这个
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) });
}
},
我有一个大对象,基本上负责整个转换钱。
在这个对象中我有 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()
) 工作正常,returns 将货币从用户默认货币转换为美元。第二个是 addTax()
,它没有 return 值我想要的值。 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()
中做错了 return 或在 addTaxAndShowBack()
中没有正确分配我不知道,这就是为什么我需要你的帮助。
return finalPriceInUSD;
这就是第二次回调中 addTaxAndShowBack()
中的 response
应该是什么。
您没有返回承诺。试试这个
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) });
}
},