什么是Promise、怎么理解Promise?以及使用场景。。

1、什么是Promise

        Promise 即为一个Es6新增的一个解决异步的方案,译为承诺,在Promise没出现之前,我们获取接口返回的数据都是通过回调函数的方式进行返回,这样造成的后果就是,当我们后期项目比较大的时候,会造成代码堵塞,不易理解,臃肿,难以维护。慢慢就会造成回调地狱的出现。

所谓回调地狱:

doSomething(function(result) {

    doSomethingElse(result, function(newResult) {

      doThirdThing(newResult, function(finalResult) {

        console.log('得到最终结果: ' + finalResult);

      }, failureCallback);

    }, failureCallback);

  }, failureCallback);

 阅读回调地狱代码属实头疼,难以接受。。。。。

现可通过Promise来解决这个问题

doSomething().then(function(result) {
    return doSomethingElse(result);
  })
  .then(function(newResult) {
    return doThirdThing(newResult);
  })
  .then(function(finalResult) {
    console.log('得到最终结果: ' + finalResult);
  })
  .catch(failureCallback);

    通过Promise的链式调用 瞬间感觉到了代码的清晰易懂程度 

  • Promise链式调用一下就降低了代码编译的难度
  • 代码可读程性明显增强

Promise 有三种状态 

  • peding        进行中
  • resolve       成功的回调
  • reject          失败的回调

特点

  • 对象的状态不受外界影响,只有异步操作的结果,可以决定当前是哪一种状态
  • 一旦状态改变(从pending变为fulfilled和从pending变为rejected),就不会再变,任何时候都可以得到这个结果

2、用法

        Promise对象是一个构造函数,可以声明一个变量来进行创建实例

        

Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolvereject

  • resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”
  • reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”

Promise构建出来的实例存在以下方法:

  • then()             //成功的回调
  • catch()           //失败的回调
  • finally()          //指定不管 Promise 对象最后状态如何,都会执行的操作

猜你喜欢

转载自blog.csdn.net/frelly01/article/details/125811883