javascript 异步问题解决 Promise

原文: https://www.cnblogs.com/yunfeifei/p/4453690.html

一直以来,JavaScript处理异步都是以callback的方式,在前端开发领域callback机制几乎深入人心。 但是大量的使用callback虽然也能实现想要的功能,但是大量的使用callback会让代码的可读性非常差(个人看法),近几年随着JavaScript开发模式的逐渐成熟,CommonJS规范顺势而生,其中就包括提出了Promise规范,Promise完全改变了js异步编程的写法,让异步编程变得十分的易于理解

Promise

  • 一个promise有三种状态:等待(pending 默认)、已完成(fulfilled)、已拒绝(rejected)

  • 一个promise的状态只可能从“等待”转到“完成”态或者“拒绝”态,不能逆向转换

  • promise必须实现then方法

  • then方法接受两个参数, 第一个参数是成功时的回调,第二个参数是失败时的回调

    function testPromise(bool) {
        return new Promise((success, error)=>{
          if (bool) {
              success();
             } else {
              error();
             }
        });
    }
    
    testPromise(true).then(()=>{
        // 如果 testPromise 的 参数为真则执行
    },()=>{
        // 如果 testPromise 的 参数为假则执行
    });
    
  • 做个形象的比喻, promise 就是考试的判断题, 默认的是没有答案(等待状态) ,只要提交答案无论对错,
    都不能再修改, 放到了编程思想中就是只要执行了 success 或者 error函数 就不能逆向的修改状态
原文地址:https://www.cnblogs.com/liaohui5/p/10581661.html