關于promise中reject和catch的問題

一、reject后的東西,一定會進入then中的第二個回調,如果then中沒有寫第二個回調,則進入catch

 var p1=new Promise((resolve,rej) => {
    console.log('沒有resolve')
    //throw new Error('手動返回錯誤')
    rej('失敗了')

 })

 p1.then(data =>{
    console.log('data::',data);
 },err=> {
    console.log('err::',err)
 }).catch(
    res => {
    console.log('catch data::', res)
 })

結果:

沒有resolve
err:: 失敗了

then中沒有第二個回調的情況

 var p1=new Promise((resolve,rej) => {
    console.log('沒有resolve')
    //throw new Error('手動返回錯誤')
    rej('失敗了')

 })

 p1.then(data =>{
    console.log('data::',data);
 }).catch(
    res => {
    console.log('catch data::', res)
 })

結果:

沒有resolve
catch data:: 失敗了

如果沒有then, 也可以直接進入catch

 var p1=new Promise((resolve,rej) => {
    console.log('沒有 resolve')
    //throw new Error('手動返回錯誤')
    rej('失敗了')

 })

 p1.catch(
    res => {
    console.log('catch data::', res)
 })

結果:

沒有resolve
catch data:: 失敗了

二、resolve的東西,一定會進入then的第一個回調,肯定不會進入catch

 var p1=new Promise((resolve,rej) => {
    console.log('resolve')
    //throw new Error('手動返回錯誤')
    resolve('成功了')

 })

 p1.then(data =>{
    console.log('data::',data);
 }).catch(
    res => {
    console.log('catch data::', res)
 })

結果:

resolve
data:: 成功了

不會進入catch的情況

 var p1=new Promise((resolve,rej) => {
    console.log('resolve')
    //throw new Error('手動返回錯誤')
    resolve('成功了')

 })

 p1.catch(
    res => {
    console.log('catch data::', res)
 })

結果:

resolve
  • throw new Error 的情況和rej一樣,但是他倆只會有一個發生
  • 另外,網絡異常(比如斷網),會直接進入catch而不會進入then的第二個回調**
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Promise 對象 Promise 的含義 Promise 是異步編程的一種解決方案,比傳統的解決方案——回調函...
    neromous閱讀 8,727評論 1 56
  • JavaScript里通常不建議阻塞主程序,尤其是一些代價比較昂貴的操作,如查找數據庫,下載文件等操作,應該用異步...
    張歆琳閱讀 2,769評論 0 12
  • 前言 本文旨在簡單講解一下javascript中的Promise對象的概念,特性與簡單的使用方法。并在文末會附上一...
    _暮雨清秋_閱讀 2,217評論 0 3
  • title: promise總結 總結在前 前言 下文類似 Promise#then、Promise#resolv...
    JyLie閱讀 12,292評論 1 21
  • 本文適用的讀者 本文寫給有一定Promise使用經驗的人,如果你還沒有使用過Promise,這篇文章可能不適合你,...
    HZ充電大喵閱讀 7,327評論 6 19