全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

Promise是什么?

发布时间:2022-06-01 16:43:00
发布人:wjy

本文主要强调Promise的用法,讨究Promise究竟在干什么。虽然已有大量的资料文档对这个概念进行了详细的讲解。可是对初学者而言,在过于繁琐的书面性概念中,确常常无法抓住重点,对问题本身的理解反而会造成麻烦。本文章只将重点放在作用上,忽略掉其它繁杂的概念,用尽可能直白的语言对这个问题进行剖析。阅读本文需要十分钟左右的时间,希望对您能有所帮助。

Promise是什么

### **Promise:**

### **作用:解决回调地狱问题,将函数嵌套的代码方式改为平级的。**

当一个回调函数嵌套一个回调函数的时候,就会出现一个嵌套结构,当嵌套的多了就会出现回调地狱的情况。

为了能更加清晰的体会promise,我们需要先观察一段代码。

```text
        function f1(f){
  console.log("f1");
  f();
 }
 
 function f2(f){
  console.log("f2");
  f();
 }
 
 function f3(f){
  console.log("f3");
  f();
 }
 
 function f4(){
  console.log("f4");
 }
 
 //回调地狱
 f1(function(){
  f2(function(){
   f3(f4);
  });
 });
```

代码段有四个函数,f1,f2,f3,f4均为函数,且后一个函数作为前一个函数的参数,然后进行嵌套调用。最终从调用的语法来看,代码十分复杂,我们把回调函数这样调用称为回调地狱。

**Pomise的作用就是将嵌套的调用方式改为平级的。**也就是说从调用的结果上来看,最终本质上是没有任何区别,Pormise只是改变了语法的书写规则。这就是Pomise的基本使用方法。

Promise的语法规则如下:

```text
        //使用方法
 //1.通常放入一个函数体内
 //2.将promise对象作为返回值
 //3.promise对象包含的多为异步操作
 function fun(){
        //success表示成功的回调,failed表示失败时的回调
  let p = new Promise(function(success,failed){
   if(条件){
    success();
   }else{
    failed();
   }
  });
  return p;
 }
 
 function success(){
  console.log("success");
 }
 
 function failed(){
  console.log("failed");
 }
 
        //promise对象.then(成功的方法,[失败的方法]);
 fun().then(success,failed);
```

这里promise对象可以将以前通过形参传递的回调函数,用then方法来进行传递。其实promise主要处理的是异步操作,如常见的如ajax请求。我们的每一个异步事件,在执行的时候,都会有三种状态,执行中,成功,失败。这也就解释了为什么then方法为什么会有两个参数,参数1代表成功时执行的回调函数,参数2代表失败时的执行状态。

所以上述函数嵌套调用的代码可以修改为:

```text
        function f1(){
  console.log("f1");
  let p = new Promise(function(f){
   f();
  });
  return p;
 }
 
 function f2(){
  console.log("f2");
  let p = new Promise(function(f){
   f();
  });
  return p;
 }
 
 function f3(){
  console.log("f3");
  let p = new Promise(function(f){
   f();
  });
  return p;
 }
 
 function f4(){
  console.log("f4");
 }
 
 //平级调用的方法
 f1().then(f2).then(f3).then(f4);
```

这样实现的功能和上述代码的功能是完全一样的,但是解决了函数嵌套调用的麻烦。

结论:**Pomise的作用就是将嵌套的调用方式改为平级的,用于处理异步操作。**

更多关于“html5培训”的问题,欢迎咨询千锋教育在线名师。千锋已有十余年的培训经验,课程大纲更科学更专业,有针对零基础的就业班,有针对想提升技术的提升班,高品质课程助理你实现梦想。

相关文章

抖音小店怎么开话费充值

抖音小店怎么开话费充值

2023-10-08
抖音小店怎么推广自己的产品视频教程呢

抖音小店怎么推广自己的产品视频教程呢

2023-10-08
一个营业执照能注册几个抖音小店

一个营业执照能注册几个抖音小店

2023-10-08
抖音小店怎么申请精选联盟店铺

抖音小店怎么申请精选联盟店铺

2023-10-08

最新文章

上海物联网培训一般费用多少

上海物联网培训一般费用多少

2023-09-12
北京物联网培训费用大概多少

北京物联网培训费用大概多少

2023-09-12
北京物联网培训需要费用高不高

北京物联网培训需要费用高不高

2023-09-12
上海效果好的物联网培训费用高吗

上海效果好的物联网培训费用高吗

2023-09-12
在线咨询 免费试学 教程领取