【问题标题】:Are these two double await code versions equivalent?这两个双重等待代码版本是否等效?
【发布时间】:2021-04-11 08:23:36
【问题描述】:

如果我有这些行:

const service = await getService('player');
const players = await service.players();

我可以改用这个单行版本吗?它们是等价的吗?

const players = await (await getService('player')).players();

有没有更简洁的写法?

【问题讨论】:

  • 是的,他们是……不,不是。
  • 等价,但你的第一个 sn-p 更容易理解。我更喜欢它。

标签: javascript async-await refactoring es6-promise


【解决方案1】:

简答:就结果而言相当于。

但是,正如@CertainPerformance 的评论,您应该使用第一个sn-p 才能像这样debugger(以及遵循最佳实践)。

let getService = (str) => new Promise(resolve => setTimeout(() => resolve({players: getPlayers}), 1000));
let getPlayers = () => new Promise(resolve => setTimeout(() => resolve("Response data"), 1000));

async function run() { 
  const service = await getService('player');
      console.log(service); // debugger to watch response of each async func
  const players = await service.players();
      console.log(players); // debugger to watch response of each async func
}

run();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    相关资源
    最近更新 更多