涓轰簡浼樺寲鐢ㄦ埛浣撻獙锛屾垜浠笇鏈涘湪杩斿洖鏁版嵁鎱㈢殑鎺ュ彛涓婃樉绀哄姞杞藉姩鐢伙紝浣嗕笉甯屾湜鏁版嵁杩斿洖蹇椂鏄剧ず鍔犺浇鍔ㄧ敾銆備笅闈㈡彁渚涗竴绉嶆柟娉曟潵瑙e喅杩欎釜闂銆傝鏂规硶鐨勬牳蹇冩槸Promise.race()銆備笅闈㈢畝鍗曞洖椤句竴涓婸romise.race鐨勪娇鐢ㄣ€侾romise.race(iterable)鏂规硶鎺ユ敹涓€涓彲杩唬瀵硅薄浣滀负鍙傛暟骞惰繑鍥炰竴涓猵romise銆傚綋杩唬鍣ㄤ腑鐨勪竴涓猵romise琚玶esolved鎴杛ejected鏃讹紝杩斿洖鐨刾romise涔熶細琚玶esolved鎴杛ejected锛屼篃灏辨槸璇达紝璋佸厛鍝嶅簲锛岃皝灏辫繑鍥炵粨鏋溿€俢onstpromise1=newPromise((resolve,reject)=>{setTimeout(resolve,500,'promise1resolved');});constpromise2=newPromise((resolve,reject)=>{setTimeout(reject,100,'promise2rejected');});constpromise3=newPromise((resolve,reject)=>{setTimeout(resolve,200,'promise3resolved')});(async()=>{try{letresult=awaitPromise.race([promise1,promise2,promise3]);console.log(result);}catch(err){console.閿欒锛堥敊璇級锛泒}锛夛紙锛夛紱//output:promise2rejected//鍥犱负promise2鍏堝搷搴旓紝杩斿洖浜哻acth鐨剅eject鍊笺€傚熀浜庢锛屾垜浠湁浜嗚В鍐抽棶棰樼殑鍔炴硶锛氶€氳繃鍐欎竴涓秴鏃跺嚱鏁帮紝鍒ゆ柇鏄帴鍙e厛鍝嶅簲杩樻槸瓒呮椂鍑芥暟鍏堝搷搴斻€傚鏋渢imeout鍦ㄥ墠鐨勮瘽锛岃鏄巐oading闇€瑕佹樉绀猴紝鍚﹀垯涓嶉渶瑕佹樉绀恒€?/妯℃嫙缃戠粶璇锋眰鍑芥暟getUserInfo(user){returnnewPromise((resolve,reject)=>{setTimeout(()=>resolve("userdata!"),Math.floor(900*Math.random()));});}//妯℃嫙鎺ュ彛璇锋眰functionshowUserInfo(user){returngetUserInfo().then(info=>{//杩欓噷澶勭悊涓氬姟閫昏緫console.log(info)//杩斿洖鍊肩敤鏉ュ憡璇塸romise銆俽ece()requestcompletereturntrue;});}//鍔犺浇鍑芥暟functionshowSpinner(){console.log("pleasewait...")}//寤惰繜鍑芥暟functiontimeout(delay,result){returnnewPromise(resolve=>{setTimeout(()=>resolve(result),delay);});}//濡傛灉瓒呮椂300ms娌℃湁鍝嶅簲锛宭oadingPromise.race([showUserInfo(),timeout(300)])銆傜劧鍚庯紙鏄剧ず=>{濡傛灉锛堬紒鏄剧ず锛塻howSpinner锛堬級锛泒锛夛紱娉ㄦ剰锛歴howUserInfo鍑芥暟蹇呴』鏈変竴涓繑鍥炲€硷紝鐢ㄤ簬鍛婅瘔promise.rece()鍦ㄨ姹傛暟鎹椂濡備綍鏄剧ず鍔犺浇鍔ㄧ敾銆傚鏋滃浣犳湁甯姪锛屽埆蹇樹簡鐐硅禐鏀寔鍝︷煄?/p>
