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

时间:2018-09-25 08:32:13

标签: javascript node.js asynchronous async-await

假设我有一个异步函数

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

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

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

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

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

2 个答案:

答案 0 :(得分:2)

假设stringr::str_extract()library(stringr) data.frame( Name = str_extract(data, "^[^:_]+"), Session = str_extract(data, "(?<=_).*?(?=:)"), Owner = str_extract(data, "(?<=:).*(?=:)"), UUID = str_extract(data, "[^:]*$"), stringsAsFactors = FALSE ) Name Session Owner UUID 1 John 1 David enfl43erl34r345 2 John <NA> David enfl43erl34r345 函数,则需要 _DB.putsomedata 。否则,它的Promise只会在后台继续,最终会失败并产生错误。同时,您的代码将继续向前执行,并且async块将长期退出。

答案 1 :(得分:0)

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

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

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