首页 > 其他分享 >Promise、async、await

Promise、async、await

时间:2024-11-24 22:14:57浏览次数:4  
标签:异步 函数 await Promise async fetch

Promise

Promise是一个js的内置对象,用于处理异步等待的对象 写法如下:

return new Promise((resolve,reject)=>{
  resolve(数据内容)
})

async

当我们将一个函数声明为 async 时,该函数会返回一个 Promise。如果函数返回的是非 Promise 值,async 函数会自动将其包装成一个已经解决(fulfilled)的 Promise。

await

只能在 async 函数内部使用。它会让异步操作暂停执行,等待 Promise 被解决或拒绝后继续执行,并返回 Promise 的结果。

async function fetchData() {
    try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        console.log(data);
    } catch (error) {
        console.error('Error:', error);
    }
}
fetchData();

总结

在以上例子中,fetchData 是一个 async 函数,它使用 await 关键字来等待 fetch 请求的结果。fetch 返回一个 Promise,当这个 Promise 解决时,response.json() 也会返回一个 Promise,我们再次使用 await 来获取解析后的数据。如果过程中有任何错误发生,会被 catch 块捕获。

  • 使用 Promise 可以让你的代码更加结构化,避免了回调地狱的问题。

  • async/await 让异步代码更加线性,易于理解和维护。

  • 这些工具一起使用可以大大简化复杂的异步操作流程,提高开发效率。

标签:异步,函数,await,Promise,async,fetch
From: https://www.cnblogs.com/dragon-925/p/18566497

相关文章

  • 你是如何更好地处理Async/Await的异常的?
    在前端开发中,更好地处理async/await异常的方法有很多,核心目标是避免未捕获的异常导致应用崩溃,并提供用户友好的错误处理机制。以下是一些最佳实践:1.try...catch块:这是最基本也是最常用的方法。将async/await代码包裹在try...catch块中,可以在catch块中捕获并处理任何......
  • Python 潮流周刊#78:async/await 是糟糕的设计(摘要)
    本周刊由Python猫出品,精心筛选国内外的250+信息源,为你挑选最值得分享的文章、教程、开源项目、软件工具、播客和视频、热门话题等内容。愿景:帮助所有读者精进Python技术,并增长职业和副业的收入。分享了12篇文章,12个开源项目,1则音视频,全文2200字。以下是本期摘要:......
  • 用思维导图梳理的 Promise,看完这篇就够了
    1.对Promise的理解2.什么是Promise链?letpromise=newPromise((resolve,reject)=>{ constcontrol=true control&&resolve(res);//如果control为true,就执行resolve(res) reject(err) //若为false,就执行reject(err)}promise.then(res=>console.log(......
  • JS异步编程精通之路(一):Callback、Promise、Async/Await 和 Observable 深度对比
    在现代JavaScript编程中,异步操作是常见且必不可少的部分。处理异步的方式多种多样,其中最常见的有Callback、Promise、Async/Await,以及近年来随着响应式编程(ReactiveProgramming)理念兴起的Observable。本文将对这几种异步处理方式进行对比,帮助你理解它们各自的优缺点,以......
  • C# await 高级用法
    本文告诉大家await的高级用法,包括底层原理。昨天看到太子写了一段代码,我开始觉得他修改了编译器,要不然下面的代码怎么可以编译通过await"林德熙逗比";需要知道,基本可以添加await都是可以等待的类型,如Task。如果一个类需要可以被等待,那么这个类必须满足以下条件类里有一个Ge......
  • 什么是 Vue 3 的 `defineAsyncComponent`?它的用途是什么?
    什么是Vue3的defineAsyncComponent?它的用途是什么?在Vue3中,defineAsyncComponent是一个用于定义异步组件的函数。异步组件是一种特殊的组件,它们允许你在需要时才加载组件代码,而不是在应用初始化时一次性加载所有组件代码。这种方式可以提高应用的加载速度和性能,尤其......
  • 异步场景: promise、async函数与await命令介绍
    如果你也对鸿蒙开发感兴趣,加入“Harmony自习室”吧!扫描下方名片,关注公众号,公众号更新更快,同时也有更多学习资料和技术讨论群。在鸿蒙的开发中,我们时常会遇到promise异步场景,有同学反馈说希望提一下。异步开发这部分的内容比较多,我不确定这位朋友具体想讨论是哪些方面,那我从......
  • 手写 p-map(控制并发数以及迭代处理 promise 的库)
    介绍p-map是一个迭代处理promise并且能控制promise执行并发数的库。作者是sindresorhus,他还创建了许多关于promise的库promise-fun,感兴趣的同学可以去看看。之前提到的p-limit也是一个控制请求并发数的库,控制并发数方面,两者作用相同,不过p-map增加了对请求(promise)......
  • 初步学习async/await,Task.GetAwaiter,Task.Result
    初步学习async/await,Task.GetAwaiter,Task.Result   网上关于async/await的知识有很多,看了很多但不如自己实践一遍来得快,所以这里记录下我的理解和大家学习下。  首先以最简单的同步方法来开始如下privatestaticvoidTest(){Console.Wr......
  • 万象更新 Html5 - es6 进阶: promise
    源码https://github.com/webabcd/Html5作者webabcd万象更新Html5-es6进阶:promise示例如下:es6\src\advanced\promise.js/***Promise-用于异步编程(非多线程)*有3种状态:pending(进行中),fulfilled(已成功),rejected(已失败)*状态只能从pending变为fulfil......