亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Promise構造函數的靜態方法

Promise構造函數的靜態方法

千萬里不及你 2021-04-19 09:18:18
我正在檢查Promise構造函數的靜態方法。當我控制臺記錄Promise構造函數屬性時,我看到了resolve和reject方法:console.log(Object.getOwnPropertyNames(Promise))// Array(7) [ "all", "race", "reject", "resolve", "prototype", "length", "name" ]我想知道這些解析和拒絕方法是否與執行程序中作為參數使用的方法相同,或者它們是分開的不同事物:const myFirstPromise = new Promise((resolve, reject) => {//   do something asynchronous which eventually calls either:////   resolve(someValue); // fulfilled//   or//   reject("failure reason"); // rejected});規范中提到了Promise Resolve Functions和Promise.resolve(x),后者是%Promise_resolve%內部對象。有人可以告訴我這些是一樣的嗎?
查看完整描述

2 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

您在輸出中看到的屬性是全局JavaScript對象console.log()的.resolve()和.reject()屬性Promise。您可以將它們視為類的靜態類方法Promise。


它們用于創建Promise已經解決/拒絕的新對象:


const p1 = Promise.resolve(3);

console.log(await p1);

// 3

該promise和reject你在調用中使用的參數:


const myFirstPromise = new Promise((resolve, reject) => {

   if (rand() < 0.5) {

       resolve(3);

   } else {

       reject(new Error('not today'));

   }

});

只是函數參數??梢愿鶕枰鼈?。它們僅在您作為參數傳遞給Promise構造函數的執行程序函數中可見。


他們沒有聯系或與任何相關Promise.resolve()和Promise.reject()。


上面的代碼也可以寫成:


const f1 = (resolve, reject) => {

   if (rand() < 0.5) {

       resolve(3);

   } else {

       reject(new Error('not today'));

   }

};


const myFirstPromise = new Promise(f1);

這樣更清楚,resolve并且reject不涉及myFirstPromise或任何Promise以任何方式。它們只是function的局部變量f1。



查看完整回答
反對 回復 2021-04-29
?
慕森王

TA貢獻1777條經驗 獲得超3個贊

Promise.resolve是“獲取價值或承諾并將其包裝在承諾中返回”的快捷方式。myPromise = Promise.resolve("myVal")是一種較短的方法

myPromise = new Promise((resolve) => resolve("myVal"))

Promise.reject做同樣的事情,只是明顯地拒絕而不是解決。


查看完整回答
反對 回復 2021-04-29
  • 2 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號