繁体   English   中英

在try / catch块上未处理的Promise拒绝

[英]Unhandled Promise rejection on try/catch block

假设我有一个异步功能

static async update (id, data){
  try { 
     //async function below
     _DB.putsomedata()

     return true
  } catch(e){
    //log errors
  }
}

并且尽管我不需要_DB.putsomedata()的结果, _DB.putsomedata()我仍然需要知道update()函数是否已完成而没有错误。

我进行了一些测试,并注意到结果将始终返回true(这是预期的),但是如果失败,则错误永远不会捕获在catch块中,并且会引发未处理的异常。

有人可以解释这种行为吗?

假设_DB.putsomedata是一个async函数,则需要await它。 否则,它的Promise只会在后台继续,最终会失败并产生错误。 同时,您的代码将继续前进,并且try..catch块将长期退出。

putsomedata函数是异步的,因此在将putsomedata标记为可计算之后(而不是针对同步函数启动),计算中的返回语句。

putsomedata返回的可能是一个承诺,它将在cpu可用时解决。

您可以使用.promise().then().catch()函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM