将经典 Promise 与异步相结合

ren*_*dom 5 javascript es6-promise

这段代码正确吗?我可以结合这样的承诺吗?

var data = {}
await getInfo(data.com)
 .then(result => {data = result})
 .catch(error => {})
doStuffOnlyAfterGetInfo(data)
Run Code Online (Sandbox Code Playgroud)

not*_*rgi 6

await是的,你可以这样做,你可以这样想:

await x其中x是 Promise 或任意值。在你的情况下,链式调用返回一个承诺。

所有这些都有效:

async function fn() {
  try {
    var a = await 20; // a = 20
    var b = Promise.resolve(20); // b = 20
    var c = Promise.reject(20); // This throws exception
    var d = Promise.reject(20).catch(() => 30) // d = 30
    var e = fetch(url) // same as fetch(url).then(e => /*...*/)
    var f = fetch(url).then(res => res.json())
  catch (e) {
    console.log(e) // 20
  }
}
Run Code Online (Sandbox Code Playgroud)

另外不要忘记,您只能awaitasync函数中使用。

播种文档