第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

為什么 Chrome 在我清楚地處理它時告訴我我有一個未處理的拒絕?

為什么 Chrome 在我清楚地處理它時告訴我我有一個未處理的拒絕?

瀟湘沐 2021-10-14 15:47:14
我正在為 Javascript 承諾使用“延遲”模式,它允許我將承諾返回給調(diào)用函數(shù),然后在稍后的時間,在某些條件下,解決或拒絕該承諾。正如您在我提供的代碼中所看到的,除了在瀏覽器中出現(xiàn)Unhandled Rejection錯誤之外,一切都按預(yù)期工作。function promiseGenerator() {  const deferred = {};  const promise = new Promise((resolve, reject) => {    deferred.resolve = resolve;    deferred.reject = reject;  });  deferred.promise = promise;  return deferred;}const generatedPromise = promiseGenerator();generatedPromise.promise.then(res => {  console.log("A string deferred resolved!", res);});generatedPromise.promise.then().catch(e => {  console.log("This is the catch", e);});generatedPromise.reject("Oh no");我期待This is the catch Oh no在控制臺中看到- 我確實(shí)做到了。但是為什么我會收到錯誤消息?顯然,我的拒絕是被處理!請注意,我不想(必然)想要將捕獲鏈接到,then因為我可能想在代碼中的其他地方單獨(dú)添加這個捕獲這是一個 Codesandbox 鏈接 https://codesandbox.io/embed/deferred-promise-catch-vanilla-pjor9
查看完整描述

3 回答

?
一只甜甜圈

TA貢獻(xiàn)1836條經(jīng)驗 獲得超5個贊

Promise 拒絕不會在.then()回調(diào)中處理,當(dāng)您then()首先附加回調(diào)并且承諾被拒絕時,錯誤被認(rèn)為是未處理的,因為沒有catch()跟隨then().


處理此問題的正確方法是將catch()鏈接添加到then():


function promiseGenerator() {

  const deferred = {};


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

    deferred.resolve = resolve;

    deferred.reject = reject;

  });

  deferred.promise = promise;


  return deferred;

}


const generatedPromise = promiseGenerator();


//Error from the rejection is handled in the catch

generatedPromise.promise.then(res => {

  console.log("A string deferred resolved!", res);

}).catch(e => {

  console.log("This is the catch", e);

});


generatedPromise.reject("Oh no");

另一種方法是傳遞一個拒絕處理程序作為then()回調(diào)的第二個參數(shù)來處理 Promise 拒絕:


function promiseGenerator() {

  const deferred = {};


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

    deferred.resolve = resolve;

    deferred.reject = reject;

  });

  deferred.promise = promise;


  return deferred;

}


const generatedPromise = promiseGenerator();


//Error from the rejection is handled in the second callback

generatedPromise.promise.then(res => {

  console.log("A string deferred resolved!", res);

},

err => {

  console.log("This is the catch", err);

});


generatedPromise.reject("Oh no");


查看完整回答
反對 回復(fù) 2021-10-14
?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗 獲得超3個贊

為了捕獲傳遞給new Promise()構(gòu)造函數(shù)的回調(diào)中拋出的錯誤,catch塊需要附加到 的返回值.then(),而不是附加到承諾本身。


generatedPromise.promise

  .then(res => {

    console.log("A string deferred resolved!", res);

  })

  .catch(e => {

    console.log("This is the catch", e);

  });

該generatedPromise.reject對象是對reject傳遞給構(gòu)造函數(shù)的回調(diào)中的參數(shù)的引用(resolve, reject) => {}。


同樣,generatedPromise.promise是對由 返回的對象的引用new Promise()。


然后,您可以捕獲通過調(diào)用引發(fā)的錯誤的唯一方法genetratedPromise.reject()是將 a 鏈接.catch()到.then(). 沒有其他辦法。


這是查看此問題的另一種方式:


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

  reject('test')

});



promise.catch(err => 'foo'); // throws unhandled promise rejection. Cause you rejected, but didn't catch it after the .then statement


promise.then(() => {}).catch(err => 'foo'); // doesn't throw rejection


查看完整回答
反對 回復(fù) 2021-10-14
?
翻閱古今

TA貢獻(xiàn)1780條經(jīng)驗 獲得超5個贊

您在承諾鏈中使用 catch 。 generatedPromise.promise.then(res => {

  console.log("A string deferred resolved!", res);

}).catch(error => console.log('error));


編輯:有人更快。


Edit2:看到其他帖子的評論??赡苡修k法,但這不是一個好習(xí)慣。


  function promiseGenerator() {

  const deferred = {};



//do your function stuff here

try{

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

    deferred.resolve = resolve;


 });

} catch(ex){

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

    deferred.resolve = resolve(ex);

  });

}


  return deferred;

}

這樣一來,一個 promise 就會有兩種不同的結(jié)果,另一種方法是使用 if else 語句來代替 try catch 塊,但這完全取決于您的應(yīng)用程序。


查看完整回答
反對 回復(fù) 2021-10-14
  • 3 回答
  • 0 關(guān)注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號