美文网首页
Promise小结

Promise小结

作者: alex_zn | 来源:发表于2018-07-31 17:31 被阅读0次

    Primise 总结 js

    回调
    1. 同步回调

      func add(a,b,func){
        func(a+b)
      };
      console.log('start');
      add(1,2,v=>console.log(v));
      console.log('end');
      
    2. 异步回调

      func add(a,b,func){
         setTimeout(()=>func(a+b),1000);
      };
      console.log('start');
      add(1,2,v=>console.log(v));
      console.log('end');3.
      
    3. 回调

    ```javascript
    // 嵌套回调
    func1(function(v1)) {
        func2(function(v2)){
            func3(function(v3)){
                console.log(v1+v2+v3);
            }
        }
    }
    // Promise 回调
    func1().then(function(){
        return v1;
    }).then(function(obj){
        return v1+obj;
    }).then(function(obj){
        return v3 + obj;
    })
    ```
    
    Promise 使用
    • resolve & reject

      promise构造函数生成Promise对象,入参函数resolve,reject

      var promise = new Promise(function(resolve,reject){
        // if succ
        resolve('succ');
        // if err
        reject('err');
      })
      
    • Fulfilled & Rejected

      Promise对象一开始是Pending的准备状态

      执行了resolve(),状态变为onFulfilled状态

      执行了reject(),状态变为onRejected状态

    • 便捷构造方法

      Promise.resolve(1);
      // ==
      new Promise((resolve) => resolve(1));
      
      Promise.reject(new Error("BOOM")) 
      // ===
      new Promise((resolve, reject) => reject(new Error("BOOM")));
      
    • 异常捕获 catch

      catch方法可以捕获到then中抛出的错误

      var promise = Promise.resolve();
      promise.then(function() {
              return 'success';
      }).then(function (success) {
          console.log(success);
          throw new Error("Another BOOM!");
      }).catch(function (error) {
          console.log(error); // 可以正常捕捉到异常
      });
      

    相关文章

      网友评论

          本文标题:Promise小结

          本文链接:https://www.haomeiwen.com/subject/sswhvftx.html