我已经进入在aws nodejs lambda函数中使用异步等待的模式,而我遇到的常见事情是需要等待一个promise的结果,并在下一个异步/ await promise中使用响应,并重复这种模式,直到我运行了所有逻辑。
gsub
无论如何,我可以在调用函数的同一行中声明并为userId分配一个值。
sudo代码:
让userId =等待GetUserId()。then(()=> {//起泡响应直到userId})
我要问的原因是,它只是一团糟/错误地单独初始化了一个变量。也许我需要一个不同的模式,或者只是我必须忍受的东西。
解决方案
df2 <- mutate_at(df, vars(col1, col2), as.character) %>%
mutate(col3 = case_when(
nchar(col1) == 11 ~ str_pad(col1, width = 14, pad = '0'),
nchar(col1) == 12 ~ gsub('(\\d)(\\d+)', '0\\10\\2', col1),
nchar(col1) == 13 ~ gsub('(\\d\\d)(\\d+)', '\\10\\2', col1),
T ~ col1
))
col1 col3
<chr> <chr>
1 74300000330 00074300000330
2 811693200042 08011693200042
3 8829999820128 88029999820128
答案 0 :(得分:1)
应该{{1}}替换await
语法(除非您确实需要distinguish fulfillment from rejection with it)。 then
表达式要么将拒绝原因作为要捕获的异常抛出,要么导致承诺的实现值。您可以直接使用它:
await
(我认为您当前的代码无意中忽略了错误并继续使用const userId = await GetUserId({AccessToken: headers.accesstoken});
const username = await GetUserName(userId);
值)。
答案 1 :(得分:0)
关键字await使JavaScript等待,直到该诺言解析并返回其结果。
let userId = await GetUserId({AccessToken: headers.accesstoken});
答案 2 :(得分:0)
如果将await的结果分配给var,则它将是promise的解析值
这样您就可以
let userId = await GetUserId({AccessToken: headers.accesstoken});
和
let username = await GetUserName(userId);
PS。不要忘记使用try / catch处理错误。