FE-DSHUI / DSHUI

前端王者小分队读书会
4 stars 1 forks source link

《你不知道的JavaScript(中卷)》-promise的一些API的区别-2021-03-22 #70

Open AwakenedSomeone opened 3 years ago

AwakenedSomeone commented 3 years ago

一、promise.resolve和new promise()中的resolve的区别

  1. 如果传入promise.resolve或者resolve的是普通纸,则两则都会直接将其作为决议结果。
  2. 如果传入的是真正的promise类型,则promise.resolve会不做处理,直接返回,而resolve则会展示执行,并返回一个promise。如:

    var p3 = new Promise( function(resolve,reject){ 
    resolve( "B" ); 
    } ); 
    var p1 = new Promise( function(resolve,reject){ 
    resolve( p3 ); 
    } ); 
    var p2 = Promise.resolve(p3)
    
    p2 === p3 // true
    p1 === p3 // false

    二、promise.race和promise.any的区别: 1.promise.race 参数是数组,但是如果是空数组,则永远不会决议。一旦有任何一个 Promise 决议为拒绝,它就会拒绝。总是会返回第一个收到的决议值,无论结果是拒绝还是完成。

  3. promise.any 这个方法用于返回第一个成功的 promise 。只要有一个 promise 成功此方法就会终止,它不会等待其他的 promise 全部完成.

三、还有其他的一些方法,不常用,详见下表:

image