假设我有一个异步函数
static async update (id, data){
try {
//async function below
_DB.putsomedata()
return true
} catch(e){
//log errors
}
}
尽管我不需要_DB.putsomedata()
的结果,但我仍然需要知道update()
函数是否完成而没有错误。
我做了一些测试,发现结果将始终返回true(这是预期的),但是如果失败,则错误永远不会捕获在catch块中,并且会引发未处理的异常。
有人可以解释这种行为吗?
答案 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()函数