代码之家  ›  专栏  ›  技术社区  ›  Ehsan

Promise.resolve中使用的是destructuring with value thenable Object?[关闭]

  •  -3
  • Ehsan  · 技术社区  · 6 年前

    以下代码使用 Destructuring :

    var obj = {
      fun1:function() { console.log('Working') }
    };
    
    obj = { fun1:function(){ console.log("Replaced Working")} }
    
    obj.fun1();
    
    //output:
    //Replaced Working
    

    是否执行以下操作 Promise 做同样的事?

    var pr = Promise.resolve({then:function(resolve){
      resolve(20);
      }
    })
    
    
    pr.then(function(v){
      console.log(v);
    })
    

    意思是, pr 是相等的 承诺 反对,它 then 方法更改为:

    function(resolve){
      resolve(20);
    }
    

    最后, pr.then(function(v){...} 产生结果。如果不使用 解构 ,所以为什么 然后 财产 Promise.resolve ?

    1 回复  |  直到 6 年前
        1
  •  2
  •   Jonas W.    6 年前

    下面的代码使用解构

    不,没有。解构将是

     const { fun1 } = obj;
     fun1();
    

    你只是在重写一个属性。

    下面的承诺也一样吗?

    不,没有。 resolve 是promise构造函数的内部函数,然后调用传入的所有函数 then 根本没有重写的属性。

    为什么承诺中会有财产?

    我不知道,这完全没有道理。如果你这样做了:

     const pr = Promise.resolve(42);
     pr.then(console.log) // 42
    

    如果传入对象,它将解析为该对象:

     const pr = Promise.resolve({ some: "thing" });
     pr.then(console.log); // { some: thing }
    

    如果那个物体有 然后 方法,它被称为 thenable 对象和承诺将遵循该函数,假设它具有 function(onFulfill, onReject) . 这是你最后一个例子。