javascript - 如何使用await函数保存变量并在发生错误时使用回调?

标签 javascript node.js asynchronous request async-await

我正在将我的代码迁移到 ES7,语法如箭头函数和 async/await。问题是,如果我尝试使用async/await同时发生错误时保存变量和回调,我不知道如何使用回调。

这是代码。我想使用await 和rp 将请求结果保存到redditJSON 变量,但我也想添加回调以进行错误处理。但我不知道如何实现这一点。

rp 是请求 promise npm 模块。

let redditJSON = await rp(optForReddit)

编辑 1

let redditJSON;
try { redditJSON = await rp(optForReddit) }
catch(err) { console.error(err) }

最佳答案

创建通用包装函数,或安装await-promise-wrapper:

当等待退出时,如果发生错误,则不会像我们在基于 promise 的实现中那样捕获

//wrapper.js

export default function forActivity(promise){
   return promise
       .then( result => [null,result])
       .catch(err => [err])
}

//yourFile.js

import forActivity from wrapper.js
const [err, redditJSON] = await forActivity(rp(optForReddit));
if(err) console.log("error");

关于javascript - 如何使用await函数保存变量并在发生错误时使用回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43175263/

相关文章:

javascript - 阴影框外的下拉菜单

javascript - 不显示 JSON 数据

php - Varnish 503 错误(缓存过载?)

c# - 我应将什么指定为 ForEachAsync 扩展方法的 Dop 参数?

javascript - 如何在JointJs中动态设置字体大小?

javascript - 将值添加到另一个数组中的数组

javascript - 从 iframe 加载时 Conceal div

javascript - 使用正则表达式提取电子邮件字段

Javascript:有什么方法可以检测所有异步脚本何时加载?

javascript - viewRender 后 FullCalendar View 卡住