从 JS Promise 计算价值
Calculate Value from JS Promise
我已将回调函数分配给变量。然后函数 return 是一个承诺,说明它已实现和价值。我希望能够 return 该值并用它来执行数学计算。
Javascript代码:
const DollarValue = web3.eth.getBalance(address, (err, balance) =>{
const EthValue = web3.utils.fromWei(balance, 'ether')
TotalEth = parseFloat(EthValue) * 4000;
return TotalEth;
})
console.log(DollarValue);
在控制台中我得到以下输出。
Promise { <state>: "pending" }
<state>: "fulfilled"
<value>: "338334846022531269"
假设 this 是您正在使用的接口,这是一个异步接口,因此您不能直接 return 函数或其回调的值,因为函数将 return 在该值可用之前很久。你有两个选择。在回调中使用您从中计算出的 balance
或 TotalEth
值,或者完全跳过回调并使用它 returns.
的承诺
使用普通回调:
web3.eth.getBalance(address, (err, balance) => {
if (err) {
console.log(err);
// do something here upon error
return;
}
const EthValue = web3.utils.fromWei(balance, 'ether')
const TotalEth = parseFloat(EthValue) * 4000;
console.log(TotalEth);
// use TotalEth here, not outside of the callback
});
使用 returned 承诺:
web3.eth.getBalance(address).then(balance => {
const EthValue = web3.utils.fromWei(balance, 'ether')
const TotalEth = parseFloat(EthValue) * 4000;
console.log(TotalEth);
// use TotalEth here, not outside of the callback
}).catch(e => {
console.log(e);
// handle error here
});
或者,使用 await
和承诺:
async function someFunction() {
try {
const balance = await web3.eth.getBalance(address);
const EthValue = web3.utils.fromWei(balance, 'ether')
const TotalEth = parseFloat(EthValue) * 4000;
console.log(TotalEth);
// use TotalEth here, not outside of the callback
} catch(e) {
console.log(e);
// handle error here
}
}
我已将回调函数分配给变量。然后函数 return 是一个承诺,说明它已实现和价值。我希望能够 return 该值并用它来执行数学计算。
Javascript代码:
const DollarValue = web3.eth.getBalance(address, (err, balance) =>{
const EthValue = web3.utils.fromWei(balance, 'ether')
TotalEth = parseFloat(EthValue) * 4000;
return TotalEth;
})
console.log(DollarValue);
在控制台中我得到以下输出。
Promise { <state>: "pending" }
<state>: "fulfilled"
<value>: "338334846022531269"
假设 this 是您正在使用的接口,这是一个异步接口,因此您不能直接 return 函数或其回调的值,因为函数将 return 在该值可用之前很久。你有两个选择。在回调中使用您从中计算出的 balance
或 TotalEth
值,或者完全跳过回调并使用它 returns.
使用普通回调:
web3.eth.getBalance(address, (err, balance) => {
if (err) {
console.log(err);
// do something here upon error
return;
}
const EthValue = web3.utils.fromWei(balance, 'ether')
const TotalEth = parseFloat(EthValue) * 4000;
console.log(TotalEth);
// use TotalEth here, not outside of the callback
});
使用 returned 承诺:
web3.eth.getBalance(address).then(balance => {
const EthValue = web3.utils.fromWei(balance, 'ether')
const TotalEth = parseFloat(EthValue) * 4000;
console.log(TotalEth);
// use TotalEth here, not outside of the callback
}).catch(e => {
console.log(e);
// handle error here
});
或者,使用 await
和承诺:
async function someFunction() {
try {
const balance = await web3.eth.getBalance(address);
const EthValue = web3.utils.fromWei(balance, 'ether')
const TotalEth = parseFloat(EthValue) * 4000;
console.log(TotalEth);
// use TotalEth here, not outside of the callback
} catch(e) {
console.log(e);
// handle error here
}
}