从诺言异步/等待返回变量

时间:2018-09-29 19:49:12

标签: javascript

我已经进入在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

3 个答案:

答案 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处理错误。