async/await / 函数赋值 returns

async/await / assignments from function returns

目前有一个简单的功能:

async function getItem(id) {
  const item = await ... doing a bunch of time consuming stuff
  return item;
}

来自同步语言,仍然从表面理解async/awaits;我预计 return 已解决的问题如下:

const item = getItem('items-8');
console.log(item); // Just getting a promise

问题有点 'cosmetic',但由于 async/await 某种程度上解决了回调问题,我希望更进一步,甚至避免可能的事情。

是否可以通过 async/awaits 获得这样的单行变量赋值? syntax/code 结构是什么?

async..await 是 ES6 promises 的语法糖,它允许以类似同步的方式编写异步代码。使用promises的代码不能是同步的,因为promises是异步的。

为了以同步方式编写,使用 getItem 的代码也应该驻留在 async 函数中。如果它是顶层的并且不驻留在另一个函数中(如应用程序初始化代码),它可以驻留在 async IIFE.

两者都可以

getItem('items-8').then(item => {
  ...
});

// inside `async` function
const item = await getItem('items-8');
...