Promise知識點
1.Promise.then()預設返回一個Promise,理論上可以無限制的then,只不過如果後面所有的then中的回撥函式如果沒有返回新的Promise.resolve(data)的話,那麼它預設會生成一個Promise.resolve(undefined),或者如果then的回撥函式只返回了一個非Promise物件的話,那麼它也會預設生成Promise.resolve(非Promise物件)。
(1)情況1:未返回任何值(返回undefined)
function 獲取使用者資訊() {
return Promise.resolve('姓名方方')
}
function 列印使用者資訊(使用者資訊) {
console.log("使用者資訊", 使用者資訊);
// return Promise.resolve(使用者資訊)
}
獲取使用者資訊()
.then(列印使用者資訊)
.then(列印使用者資訊);
上述程式碼列印結果為:
(2)情況2:返回一個非Promise物件的值
function 獲取使用者資訊() {
return Promise.resolve('姓名方方')
}
function 列印使用者資訊(使用者資訊) {
console.log("使用者資訊", 使用者資訊);
return 11
}
獲取使用者資訊()
.then(列印使用者資訊)
.then(列印使用者資訊);
上述程式碼返回結果為:
以上兩種情況都理論上可以無限制的then下去。
2.await一個Promise,如果Promise中執行的是resolve(data),那麼返回值就是resolve(data)中的data;如果Promise中執行的是reject(error),那麼可以通過try catch來catch到reject(error)中的error。
(1) Promise中執行的是resolve情況
async function fooResolve1() {
let data = await new Promise((resolve, reject) => {
resolve(11)
})
console.log('data--->', data)
}
async function fooResolve2() {
let data = await Promise.resolve(11)
console.log('data--->', data)
}
fooResolve1()
fooResolve2()
上述兩種resolve情況返回的都是11
(2) Prromise中執行的是reject情況
async function fooReject1() {
try {
let data = await new Promise((resolve, reject) => {
reject(11)
})
console.log("fooReject -> data", data)
} catch (e) {
console.log(e)
}
}
async function fooReject2() {
try {
let data = await Promise. reject(11)
console.log("fooReject -> data", data)
} catch (e) {
console.log(e)
}
}
fooReject1();
fooReject2()
返回結果為:
相關文章
- Promise重要知識點Promise
- promise知識點小結Promise
- Promise的10大知識點!Promise
- Promise學習筆記(知識點 + 手寫Promise)Promise筆記
- ECMA script6 promise知識點整理Promise
- 關於Promise知識點都在這裡Promise
- ES6的Promise知識點總結Promise
- 面試總結:Promise有關面試的知識點。面試Promise
- 知識點
- linux知識知識點總結Linux
- 面試知識點面試
- Laravel 知識點Laravel
- 通用知識點
- 前端知識點前端
- ajax知識點
- rabbitmq 知識點MQ
- Redis知識點Redis
- SQL知識點(+)SQL
- JavaWeb知識點JavaWeb
- MySQL知識點MySql
- 知識點——terms
- Weex 知識點
- mybatis知識點MyBatis
- SASS知識點
- git 知識點Git
- KVO知識點
- iOS 知識點iOS
- Web知識點Web
- mongoDB知識點MongoDB
- qc知識點
- ASM知識點ASM
- 混合知識點
- JS知識點:ES6 中常見的知識點JS
- 浮點數小知識點
- MongoDB知識要點MongoDB
- webpack常用知識點Web
- Laravel Model 知識點Laravel
- 知識點記錄