千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > Promise是什么?

Promise是什么?

来源:千锋教育
发布人:wjy
时间: 2022-06-01 16:43:00 1654072980

本文主要强调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培训”的问题,欢迎咨询千锋教育在线名师。千锋已有十余年的培训经验,课程大纲更科学更专业,有针对零基础的就业班,有针对想提升技术的提升班,高品质课程助理你实现梦想。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT