[英]how to return value to caller function in asynchronous javascript and web3js
在下面的例子中,我可以看到從someFunction
寫入控制台的hash
,但是我無法將r返回給callerFunction
。 輸出undefined
。 如何將h
值返回給callerFunction
async function caller(){
var val = 10;
let result = await someFunction(val);
console.log(result);
}
async function someFunction(val) {
let r = await contract.methods.updateValue(val).send({from: account})
.on('transactionHash', function(h){
console.log(h);
return h;
})
return r;
}
我在下面嘗試了一些變化:
變化1
async function someFunction(val) {
return contract.methods.updateValue(val).send({from: account})
.on('transactionHash', function(h){
console.log(h);
return h;
})
return r;
}
變化2
async function someFunction(val) {
return r = contract.methods.updateValue(val).send({from: account})
.on('transactionHash', function(h){
console.log(h);
return h;
})
}
變化3
async function someFunction(val) {
var result;
let r = await contract.methods.updateValue(val).send({from: account})
.on('transactionHash', function(h){
console.log(h);
result = h;
})
return result;
}
仍然無法使其工作....
最方便的方法是使用回調如下:
async function caller(){
var val = 10;
await responder(val, async function(e, res){
if(res.status === 'success' && res.hash) {
//do stuff with res.hash
} else {
//handle error here
}
})
}
async function responder(val, callback) {
contract.methods.updateValue(val).send({from: account})
.on('transactionHash', (hash) => {
callback(null, {'status': 'success', 'hash': hash});
})
.on('error', (e)=> {
callback(null, {'status': 'error', 'error': e.message})
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.