zoukankan      html  css  js  c++  java
  • Promise.resolve 的使用

    今天看到一个中间件,中使用了Promise.resolve,在这里做一下总结:

    /**
     * 使你除了 action 之外还可以发起 promise。
     * 如果这个 promise 被 resolved,他的结果将被作为 action 发起。
     * 这个 promise 会被 `dispatch` 返回,因此调用者可以处理 rejection。
     */
    const vanillaPromise = store => next => action => {
      if (typeof action.then !== 'function') {
        return next(action)
      }
    
      return Promise.resolve(action).then(store.dispatch)
    }
    Promise.resolve共有四种参数
    第一种:不带任何参数
    setTimeout(function () {
      console.log('three');
    }, 0);
    
    Promise.resolve().then(function () {
      console.log('two');
    });
    
    console.log('one');
    // one two three

    相当于一个resolve状态的promise对象

    第二种:普通变量或者普通对象
    const p = Promise.resolve('Hello');
    
    p.then(function (s){
      console.log(s)
    });
    // Hello

    相当于resolve状态的promise对象

    第三种:参数是一个 Promise 实例

    如果参数是 Promise 实例,那么Promise.resolve将不做任何修改、原封不动地返回这个实例。

    第四种:参数是一个thenable对象

    thenable对象指的是具有then方法的对象,比如下面这个对象
    let thenable = {
      then: function(resolve, reject) {
        resolve(42);
      }
    };
    
    Promise.resolve方法会将这个对象转为 Promise 对象,然后就立即执行thenable对象的then方法。
    let thenable = {
      then: function(resolve, reject) {
        resolve(42);
      }
    };
    
    let p1 = Promise.resolve(thenable);
    p1.then(function(value) {
      console.log(value);  // 42
    });
    
    thenable对象的then方法执行后,对象p1的状态就变为resolved,从而立即执行最后那个then方法指定的回调函数,输出 42

    来源链接:https://www.jianshu.com/p/96080498b4ea
  • 相关阅读:
    根正苗红_百度百科
    会员
    阴阳屏_百度百科
    腹黑正太_百度百科
    创享派-互联网创业者社区
    TF-IDF与余弦相似性的应用(一):自动提取关键词
    跑过三关六码头,吃过奉化芋艿头里的三关六码头是什么?_百度知道
    梁周洋_百度百科
    PClady专访中国第一名媛、元媛舞会总裁周采茨女士【图】_摩登前沿 _奢品 _太平洋时尚网
    AV_百度百科
  • 原文地址:https://www.cnblogs.com/sunupo/p/15793426.html
Copyright © 2011-2022 走看看