promise使用方法


代碼報錯會走向失敗時的回調

 

1 let p = new Promise((resolve, reject) => {
2   throw new Error("我錯了"); //會失敗
3 })
4 
5 p.then((data) => {
6   console.log(data)
7 }, (err) => {
8   console.log(err) // 執行這個方法
9 })

 

執行reject會走向失敗時的回調

 

let p = new Promise((resolve, reject) => {
  reject("我錯了") //會失敗
})

p.then((data) => {
  console.log(data)
}, (err) => {
  console.log(err) // 執行這個方法
})

 

執行resolve會執行成功時的回調

 

let p = new Promise((resolve, reject) => {
  resolve("我對了") // 會成功
})

p.then((data) => {
  console.log(data) // 執行此方法
}, (err) => {
  console.log(err) 
})

 

不執行的情況

 

let p = new Promise((resolve, reject) => {
  console.log("不知道");
})

p.then((data) => {
  console.log(data) // 不執行
}, (err) => {
  console.log(err)  // 不執行
})

 

鏈式調用可以返回普通值

 

let p = new Promise((resolve, reject) => {
  resolve("執行1")
})

p.then((data) => {
  return "執行2"
}).then((data) => {
  return "執行3"
}).then((data) => {
  console.log(data) //執行3
})

 

鏈式調用可以返回promise

 

let p = new Promise((resolve, reject) => {
  resolve("執行1")
})

p.then((data) => {
  return new Promise((resolve, rejext) => {resolve("執行2")})
}).then((data) => {
  return new Promise((resolve, rejext) => {resolve("執行3")})
}).then((data) => {
  console.log(data) //執行3
})

 

鏈式調用也可以不返回任何值直接到達下一步

 

let p = new Promise((resolve, reject) => {
  resolve("執行1")
})

p.then((data) => {
  // 跳過我吧!
}).then((data) => {
  return new Promise((resolve, rejext) => {resolve("執行3")})
}).then((data) => {
  console.log(data) //執行3
})

 

手寫一個promise:https://github.com/wuxianqiang/promise


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM