Javascript 异步/等待vs新承诺(解决、拒绝)

Javascript 异步/等待vs新承诺(解决、拒绝),javascript,promise,Javascript,Promise,async/await与使用.then、.finally和.catch 比如说 functionThatReturnsPromise(someVar).then((returnedValueFromPromise) => { console.log(returnedValueFromPromise) }) vs 我不确定承诺链是否只是旧的符号,它已经被新的async/await所取代。这两种方法都有使用案例吗?什么是更好的练习?这取决于你想要什么异步/等待是新的。这样想,他们允许

async/await与使用
.then
.finally
.catch

比如说

functionThatReturnsPromise(someVar).then((returnedValueFromPromise) => {
    console.log(returnedValueFromPromise)
})
vs


我不确定承诺链是否只是旧的符号,它已经被新的async/await所取代。这两种方法都有使用案例吗?什么是更好的练习?

这取决于你想要什么<代码>异步/
等待
是新的。这样想,他们允许一个承诺像同步一样运行,而实际上它不是同步的

此外,使用
async
/
await
可以使代码更干净、更可读。 为了回答你的问题,他们在做什么方面没有太大的区别。语法完全不同

承诺链并不是一种古老的方式,它们是相当新的,只是
async
/
await
来得晚了一点-为您提供了一种处理承诺的“更好”方式


最后,您可以在代码中互换使用它们。

这取决于您想要什么<代码>异步/
等待
是新的。这样想,他们允许一个承诺像同步一样运行,而实际上它不是同步的

此外,使用
async
/
await
可以使代码更干净、更可读。 为了回答你的问题,他们在做什么方面没有太大的区别。语法完全不同

承诺链并不是一种古老的方式,它们是相当新的,只是
async
/
await
来得晚了一点-为您提供了一种处理承诺的“更好”方式


最后,您可以在代码中互换使用它们。

您误解了它的工作原理。使用
async/await
可以实现代码执行的同步语法流,即:

try {
  const returnedValueFromPromise = await functionThatReturnsPromise(someVar);
} catch (err) {
  console.error(err);
  throw err
}
注意

  • 代码块必须位于async作用域函数内
  • 你仍然需要做错误处理,不能认为承诺总是有效的
  • 默认情况下,
    async
    包含的函数返回的所有值都是承诺值

    • 您误解了它的工作原理。使用
      async/await
      可以实现代码执行的同步语法流,即:

      try {
        const returnedValueFromPromise = await functionThatReturnsPromise(someVar);
      } catch (err) {
        console.error(err);
        throw err
      }
      
      注意

      • 代码块必须位于async作用域函数内
      • 你仍然需要做错误处理,不能认为承诺总是有效的
      • 默认情况下,
        async
        包含的函数返回的所有值都是承诺值

        • 需要注意的是,如果请求失败,你需要将
          await
          语句包装在
          try-catch块中,我个人认为这比常规承诺链更丑陋。

          需要注意的是
          await
          ,您需要将
          await
          语句包装在
          try-catch块中,以防请求失败,我个人认为这比常规承诺链更难看。

          async-await只是语法上的承诺糖,它使代码看起来更具可读性,特别是当您有嵌套的pomise时,从类似的问题中检查这个漂亮的例子,比较示例是没有意义的。其中一个定义了
          函数tahtreturnspromise
          ,另一个调用它并使用promise?来回答题为“Async/Await vs new promise(resolve,reject)”的问题:Async/Await不就是一个API吗?它只是在引擎盖下使用Promises(和generators?)以获得更好的易读性吗?Async Await在语法上是promise的糖,它使代码看起来更具可读性,特别是当您有嵌套的pomise时,从类似的问题中检查这个漂亮的例子,比较示例是没有意义的。其中一个定义了
          函数tahtreturnspromise
          ,另一个调用它并使用promise?来回答题为“Async/Await vs new promise(resolve,reject)”的问题:Async/Await难道不只是一个API,它使用Promises(和生成器)来提高可读性吗在引擎盖下?您不需要将所有内容都包装在
          try
          /
          catch
          中,就像您不必在每个承诺上安装
          .catch()
          处理程序一样。你只需要在你想处理错误的地方去做,通常是在最后。你不需要把所有的东西都包装在
          try
          /
          catch
          中,就像你不需要在每个承诺上都安装
          .catch()
          处理程序一样。你只需要在你想处理错误的地方去做,通常在最后。