当前位置: 首页 > article >正文

到底什么是JS的promise?

一、promise的作用

promise用于异步调用,当你需要使用异步嵌套的时候,可以使用promise去简化代码,而不是在ajax或者fetch请求中,再重复写多个请求甚至更多的嵌套异步请求。

二、promise的使用

在promise中可以传入一个函数,函数有两个参数,如下所示,函数可以写成function形式,也可以写成箭头函数,其中,你可以根据业务逻辑去选择执行resolve或者reject。

下方的案例是判断随机数是否大于50,如果大于50就执行resolve(),小于五十就执行reject();其中,两个方法都可以传递参数。在后面的then或者catch方法中可以去获取这里传递的参数。

const promise1 = () => new Promise((resolve, reject) => {
      let i = Math.ceil(Math.random() * 100);
      if (i > 50) {
         resolve("随机数大于50");
      } else {
         reject("随机数小于50");
      }
})

执行resolve时表示执行逻辑成功,会在后续中调用then方法,即调用实例的then方法,可在then方法中处理相应的逻辑。

执行reject时表示执行逻辑失败,会在后续中调用catch方法,即调用实例的catch方法,可在catch方法中处理相应的逻辑。

promise1().then((res) => {
    console.log(res);
}).catch((res) => {
    console.log(res);
});

三、promise如何嵌套调用多个异步方法

这里写了四个promise,可以分别在这些地方进行异步请求,然后调用第一个promise2的时候,在then方法中return另一个你想继续执行的一步请求,例如promise3,你就可以继续在后方写then方法,如下实例所示,

const promise2 = () => new Promise((resolve, reject) => {
      // 在此执行异步方法,例如ajax请求
      resolve(2);
})

const promise3 = () => new Promise((resolve, reject) => {
    // 在此执行异步方法,例如ajax请求
    resolve(3);
})

const promise4 = () => new Promise((resolve, reject) => {
    // 在此执行异步方法,例如ajax请求
    resolve(4);
})

const promise5 = () => new Promise((resolve, reject) => {
    // 在此执行异步方法,例如ajax请求
    resolve(5);
})

嵌套异步请求的实例,如下所示,

promise2().then(res => {
    console.log(res);
    return promise3();
}).then((res1) => {
    console.log(res1);
    return promise4();
}).then((res2) => {
    console.log(res2);
    return promise5();
}).then((res3) => {
    console.log(res3);
})

这样我们就完成了嵌套异步请求了。感谢观看,如有问题,欢迎指导,谢谢。


http://www.kler.cn/a/14926.html

相关文章:

  • 9.Kafka系列之设计思想(七)-配额
  • Visual Studio的安装注意
  • Clang SA is not enabled
  • 软件开发案例实战经验
  • 为了安装pip install pyaudio花费不少时间,坑
  • ThreadLocal机制解读和源码分析
  • 用好ChatGPT,毕业直接走上人生巅峰
  • 打造APP广告变现利器,了解聚合广告SDK的选择技巧与优势
  • 读 AI学者生存策略
  • 人工智能前沿——「小海带」超全视觉注意力机制资源分享(附下载链接)
  • 计算机网络学习07(DNS域名系统详解)
  • 制作自己的镜像并且推送到docker hub上去。
  • 10 | Qt处理16进制
  • Android Overlay机制
  • 日撸 Java 三百行day39
  • Docker-Compose 了解 部署nginx与lnmp
  • 组态王与PLC之间1主多从自组网无线通信
  • C++ 探索程序 详细解读程序在运行过程中都发生了什么
  • Maya - 后缀为xgen文件导出到虚幻引擎
  • 安卓GB28181-2022 RTP over TCP