Promise Catch 在 json rpc 调用中未收到错误
Posted
技术标签:
【中文标题】Promise Catch 在 json rpc 调用中未收到错误【英文标题】:Promise Catch is not receiving error in json rpc calls 【发布时间】:2020-03-10 08:49:51 【问题描述】:如果地址错误或交易不成功但没有得到任何响应,我会尝试出错。请帮帮我
/列出交易 API/
app.post('/sendtoadd',(req,res) =>
var fromAdd = req.body.fromAddress;
var toAdd = req.body.toAddress;
var qty= req.body.qty;
var assetId = req.body.assetId;
console.log("SEND TO ADDRESS API is in progress");
functions.sendToAddress(fromAdd, toAdd, qty, assetId).then(function(result)
res.send(result);
).catch(function(err)
console.log(err);
res.send(err);
);
)
/*函数定义*/
function sendToAddress(fromAddress, toAddress, qty, assetId)
return new Promise(function(resolve,reject)
var client = new rpc.Client(options);
client.call(
"jsonrpc":"2.0",
"id":1,
"method":"sendtoaddress",
"params":[fromAddress,toAddress,qty,assetId]
,
function (err, res)
if(err)
reject(err);
return;
else
var msg = res;
var message = msg.result;
resolve(message);
)
)
【问题讨论】:
如果错误在json响应中,我该如何检查响应消息 你用 [grpc] 标记了这个。您能否说明您正在使用什么 gRPC 库以及如何创建或加载rpc.Client
类?
【参考方案1】:
client.call 的回调函数是异步的。因此它不会找到 reject() 或 resolve() 回调。
试试:
function sendToAddress(fromAddress, toAddress, qty, assetId)
return new Promise(function(resolve,reject)
var res = resolve,
rej = reject;
var client = new rpc.Client(options);
client.call(
"jsonrpc":"2.0",
"id":1,
"method":"sendtoaddress",
"params":[fromAddress,toAddress,qty,assetId]
,
function (err, res)
if(err)
rej(err);
return;
else
var msg = res;
var message = msg.result;
res(message);
)
);
【讨论】:
以上是关于Promise Catch 在 json rpc 调用中未收到错误的主要内容,如果未能解决你的问题,请参考以下文章
如何重构一个使用相同函数的promise catch,但在调用函数中也是一个变量?
如果使用 then ,是不是需要在 promise 中嵌套 catch?
Promise中的then第二个参数和catch有什么区别?