【问题标题】:Using async with request使用异步请求
【发布时间】:2018-04-24 21:03:55
【问题描述】:

所以我最近跳上了 async/await 火车,很好地尝试了我仍然掌握一些概念。

我已经开始尽可能多地切换到 async/await 和不提供它的包,但我找到了 Promise 版本。

无论如何,我偶然发现了 request-promise-native 模块,它就像请求一样,但我相信你可以看到它利用了承诺。

我一直在尝试使用 async/await 并且它可以工作,但我不确定我是否正确使用它。事实上,我什至不确定它是否比使用 promise 更有优势,但我正在转换的这个特定函数有很多回调,所以我试图将标签的数量保持在最低限度。

testFunction: async (param) => {
    let results;

    try {
        results = await request(requestOptions);
    } catch (e) {
        return (e);
    }

    // Do stuff with results

现在这可行,我得到了想要的结果,但我的问题是 1. 这甚至是使用 async/await 的正确方法吗? 2. 与库提供的标准承诺相比,这有什么好处吗?

【问题讨论】:

    标签: node.js async-await


    【解决方案1】:
    1. 您确实正确地使用了async/await。函数定义必须在 async 之前,就像您所做的那样,await 运算符应该在返回 Promise 的代码之前,就像您所做的那样。将 await 包裹在 try/catch 中也是正确的,因为如果 Promise 被拒绝,await 表达式将抛出被拒绝的值 (see MDN)。
    2. 好处是代码看起来是同步的,这样更容易跟踪、理解和推理。

    【讨论】:

    • 感谢您的洞察力,很高兴知道我正确使用了它。我想 try/catch 只是感觉很奇怪,但它比我之前的回调数量要好得多!
    猜你喜欢
    • 2019-07-21
    • 2016-08-19
    • 2020-05-03
    • 1970-01-01
    • 2011-01-09
    • 2012-03-09
    • 2014-11-30
    • 2016-07-19
    • 1970-01-01
    相关资源
    最近更新 更多