首页 > 其他分享 >TS promise

TS promise

时间:2023-06-02 11:46:08浏览次数:33  
标签:resolve reject TS Promise 操作 promise data 处理函数

在 TypeScript 中,Promise 是用于处理异步操作的对象。它表示一个可能在未来某个时间点完成或失败的操作,并返回操作结果或错误。

Promise 可以有三种状态:

  1. pending(进行中):Promise 的初始状态,表示操作正在进行中。
  2. fulfilled(已完成):表示操作成功完成。
  3. rejected(已拒绝):表示操作失败。

创建 Promise 对象时,需要传递一个执行器函数(executor function),它接受两个参数:resolve 和 reject。通过调用 resolve 函数,可以将 Promise 状态从 pending 变为 fulfilled,并传递操作结果。通过调用 reject 函数,可以将 Promise 状态从 pending 变为 rejected,并传递操作失败的原因。

Promise 提供了链式调用的机制,可以通过 then 方法注册成功状态的处理函数,通过 catch 方法注册失败状态的处理函数。这样可以对异步操作进行更加清晰和结构化的处理。

下面是一个使用 Promise 的示例:

function fetchData(): Promise<string> {
  return new Promise<string>((resolve, reject) => {
    setTimeout(() => {
      const data = 'Data fetched successfully';
      if (data) {
        resolve(data); // 模拟操作成功
      } else {
        reject(new Error('Failed to fetch data')); // 模拟操作失败
      }
    }, 2000);
  });
}

fetchData()
  .then((data) => {
    console.log(data); // 在操作成功时打印结果
  })
  .catch((error) => {
    console.error(error); // 在操作失败时打印错误信息
  });

  

在上述示例中,fetchData 函数返回一个 Promise 对象,用于模拟异步获取数据的操作。通过调用 then 方法注册成功状态的处理函数,该函数会在操作成功时被调用,并接收操作结果作为参数。通过调用 catch 方法注册失败状态的处理函数,该函数会在操作失败时被调用,并接收错误信息作为参数。

Promise 还提供了其他方法,如 finally 方法用于注册无论操作成功还是失败都要执行的处理函数,以及静态方法如 all、race、resolve 和 reject 等,用于处理多个 Promise 对象的组合和创建。

使用 Promise 可以更好地处理异步操作的结果和错误,避免回调地狱,使代码更加可读和可维护。

   

标签:resolve,reject,TS,Promise,操作,promise,data,处理函数
From: https://www.cnblogs.com/nafio/p/17451290.html

相关文章

  • ECharts点击横坐标事件实现超链接跳转
    需求:微博排行榜,横坐标展示出了微博对应的id,现在需要通过点击横坐标来实现跳转到对应的微博页面。设置横坐标中的triggerEvent属性为true;xAxis:{...triggerEvent:true,...},添加on点击事件。thisChart.on("click",function(params){window.location.......
  • TSP问题的不可近似性
    \(\S\)结论TSP问题:n阶带权无向完全图中,找权值最小的哈密顿回路(无向图中遍历所有顶点的回路)优化问题,记最优解为OPT对于一般的n顶点TSP问题(非Metric),任意多项式时间内可计算的函数f(n)均不可近似,除非P=NP已知哈密顿回路存在性判定是经典的NPC问题;f(n)举例:\(f(n)=2^n\)......
  • 学习用IDEA 开发还是sts爽
    自从使用IDEA开发后一直感觉IDEA的背景怎么调都是不爽,感觉除了合适让我装个逼,其他的是真的没他多用处,对还有提示多一点但是IDEA的提示感觉是真的占用内存啊 要说撸代码还是eclipse上爽,但是Eclipse毕竟是针对Java所以在html、jsp、js文件上的开发速度就相对要慢了许多啊,不多也没......
  • kprobe_events shell模式使用教程
    kprobe_eventsshell模式使用教程kprobe使用前提需要内核启用以下配置CONFIG_KPROBES=yCONFIG_HAVE_KPROBES=yCONFIG_KPROBE_EVENT=ykprobe_eventskprobe_events有两种类型:kprobe,kretprobekprobe_evnets规则添加的入口:/sys/kernel/debug/tracing/kprobe_events......
  • [WC/CTS2023] 树据结构 题解
    题目描述作为一个熟练的OI选手,你对数据结构的各种题型早已轻车熟路,比赛中只要碰到数据结构题就能三下五除二轻松搞定。这一天,你翻开OJ,看到了这道题:给定\(n\)个点的有根树,点编号为\(1,2,\dots,n\),\(1\)为根。每条边上有一个\(1\)至\(n-1\)的两两不同的权值。维护......
  • 合理设置K8S中的Requests和Limits
    所有容器都应该设置Requestsrequests的值并不是指给容器实际分配的资源大小,它仅仅是给调度器看的,调度器会"观察"每个节点可以用于分配的资源有多少,也知道每个节点已经被分配了多少资源。被分配资源的大小就是节点上所有Pod中定义的容器requests之和,它可以计算出节点剩余多......
  • pycharm 运行pytest的先决条件 不然会报no tests were found
    问题描述:在跑代码的时候报错pycharm运行pytest的先决条件不然会报notestswerefound,查了一下说py文件命名以test开头会导致pycharm默认以pytest模式运行,大伙可以先试一下,但是我这边程序命名也不是这种情况,修改了程序名也没有好。解决方案:1. 解决方法,.py文件的文件名要以te......
  • 【数据集】 Bosch Small Traffic Lights Dataset(BSTLD)
    前言 参考1. GitHub-berktepebag/Traffic-light-detection-with-YOLOv3-BOSCH-traffic-light-dataset;2. BoschSmallTrafficLightsDataset;3. GitHub-bosch-ros-pkg/bstld:SamplescriptsfortheBoschSmallTrafficLightsDataset;4. ADeepLearningApproa......
  • Echarts——如何默认选中图表并显示tooltip
    前言参考资料实现预览地址内容很简单借助于dispatchAction来触发事件;import*asechartsfrom'echarts';varchartDom=document.getElementById('main');varmyChart=echarts.init(chartDom);varoption;option={tooltip:{trigger:'axis'......
  • saltstack安装
    saltstack基于python开发的C/S架构配置管理工具底层使用ZeroMQ消息队列pub/sub方式通信使用SSL证书签发的方式进行认证管理,传输采用AES加密在saltstack架构中服务器端叫Master,客户端叫Minion。  在Master和Minion端都是以守护进程的模式运行,监听配置文件里面定义的ret_port(......