首页 > 其他分享 >promise和async await的差别

promise和async await的差别

时间:2023-08-01 13:22:16浏览次数:40  
标签:异步 错误 代码 await promise Promise async

Promise 是 ES6 引入的一种处理异步操作的机制。它可以表示一个异步操作的最终完成或失败,并在完成或失败后返回结果或错误信息。

Async/await 是 ES8(ECMAScript 2017)引入的一种基于 Promise 的语法糖,用于更简洁地处理异步操作。它可以让异步的代码看起来更像同步的代码,提供了更好的可读性和编写体验。

下面是 Promise 和 async/await 的主要差别:

  1. 语法差异:Promise 使用 then() 和 catch() 方法来处理异步操作的结果和错误,而 async/await 使用 async 和 await 关键字以更直观的方式编写异步代码。

  2. 错误处理:Promise 使用 catch() 方法来捕获错误,而 async/await 可以使用 try-catch 语句来捕获错误。

  3. 代码可读性:async/await 可以让异步代码看起来更像同步代码,逻辑更清晰,可读性更好。通过使用 await 关键字,可以将异步操作写成一系列顺序执行的语句,而不是嵌套的回调函数。

  4. 错误堆栈追踪:使用 Promise,错误发生时,堆栈追踪会包含 Promise 内部的异步操作,使得定位错误变得更困难。而使用 async/await,错误堆栈追踪会显示在出错的地方,更方便调试和定位错误。

  5. 错误处理方式:Promise 是使用回调函数来处理异步操作的错误,而 async/await 使用 try-catch 机制来处理错误。

虽然 async/await 是基于 Promise 的,但它们有不同的用法和语法,让异步代码的编写更简洁和可维护,并提供了更好的错误处理机制。

标签:异步,错误,代码,await,promise,Promise,async
From: https://www.cnblogs.com/liace/p/17596195.html

相关文章

  • Js 之promise、async 和 await
    一、示例代码<html><head></head><body><scriptsrc="jquery.js"></script><script>constlogin=asyncfunction(){vara=awaitnewPromise((resolve,reject)=>{$.get("&qu......
  • AsyncTask的用法
    原文链接:   在开发Android应用时必须遵守单线程模型的原则:AndroidUI操作并不是线程安全的并且这些操作必须在UI线程中执行。在单线程模型中始终要记住两条法则: 2.确保只在UI线程中访问AndroidUI工具包      当一个程序第一次启动时,Android会同时启动一个对应......
  • asyncio之网络请求Aiohttp笔记(转)
    翻译:https://zhuanlan.zhihu.com/p/425059903作者:挂枝儿来源:知乎本文源自:4Buildingaconcurrentwebcrawler·PythonConcurrencywithasyncioMEAPV10​livebook.manning.com/book/concurrency-in-python-with-asyncio/chapter-4/v-10/主要介绍Python近年新出的协程......
  • JavaScript 中的Promise学习
     代码示例:<scripttype="text/javascript">newPromise(function(resolve,reject){console.log(111);resolve(222);}).then(function(value){console.log(value);......
  • 优化trycatch所需的前置知识点(Promise对象讲解)
    优化trycatch所需的前置知识点(Promise对象讲解):https://blog.csdn.net/weixin_45371730/article/details/122029631?spm=1001.2101.3001.6650.9&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-9-122029631-blog-119996003.235%5E......
  • Promise 中的异步错误 怎么捕获
    Promise中的异步错误怎么捕获:https://blog.csdn.net/liubangbo/article/details/128497218?ops_request_misc=&request_id=&biz_id=102&utm_term=promise%20%E5%BC%82%E5%B8%B8%E6%8D%95%E8%8E%B7&utm_medium=distribute.pc_search_result.none-task-blog-2~all~soba......
  • promise
    Promise.all是一个静态方法,用于处理多个Promise对象。它会接收一个Promise对象数组作为参数,返回一个新的Promise对象,该Promise对象在所有Promise对象已完成时才会完成,并携带着所有Promise对象完成的结果(按照Promise对象数组顺序)。以下是实现一个简单的Promise.al......
  • 手写一个Promise
    Promise背景JavaScript这种单线程事件循环模型,异步行为是为了优化因计算量大而时间长的操作。在JavaScript中我们可以见到很多异步行为,比如计时器、ui渲染、请求数据等等。Promise的主要功能,是为异步代码提供了清晰的抽象,支持优雅地定义和组织异步逻辑。可以用Promise表示异步......
  • WPF AsyncLocal 为 null 的错误 、 AsyncLocal 在WPF中的使用问题
    前言:  想载WPF中使用AsyncLocal下,发现这里面有个巨坑。参考链接  标题为AsyncLocalinWPFisnullafterfirstsetonthesamethread  AsyncLocl变量在程序初始化时设置,主窗口加载Load事件之前都还有,Load事件执行完后就,清空了ExecutionContext。示例  ......
  • Promise
    Promise是一种用于处理异步操作的对象(解决了回调地狱的问题)它有三种状态:pedding(进行中)    resolve(已成功)   rejected(已失败) pedding =>resolve 或 pedding=>rejected(状态一旦变更,就无法再次变更了,是什么就是什么了,板上钉钉)了解Promise前可以在......