苟日新,日日新,又日新
术语通俗解释
const asyncFn = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('success')
// reject('err')
// 异步操作中通过 throw 抛出的错误无法捕获
// 因为 try...catch 只能捕获同步操作抛出的错误
// throw 'err'
}, 1000)
})
}
asyncFn().then(
value => {
console.log(value)
},
// 实际使用中,一般在最后通过 .catch 统一捕获错误
reason => {
console.warn(reason)
}
)
executor 执行器函数: 在实例化 Promise 时立即同步执行,Promise 将内部的 resolve 和 reject 两个函数作为参数传入 executor,即 executor(resolve, reject)
resolve 函数: 兑现后我们调用的函数,调用后,Promise 的状态由 pending 变为 fulfilled,value 将作为兑现的结果值(PromiseResult)传递给后续链式调用中的 onFulfilled 回调函数
reject 函数: 拒绝后我们调用的函数,调用后,Promise 的状态由 pending 变为 rejected,reason 将作为拒绝的原因(PromiseResult)传递给后续链式调用中的 onRejected 回调函数
const p1 = async () => {
return 1
}
console.log(p1())
const p2 = async () => {
return Promise.reject('err')
}
console.log(p2())
;(async () => {
try {
const p1 = await 1
console.log(p1)
const p2 = await Promise.resolve('success')
console.log(p2)
const p3 = await Promise.reject('error')
console.log(p3)
} catch (e) {
console.warn(e)
}
})()
let data = await fetch(url); 等价于 let data = fetch(url).then(res => res);async function foo() { return 1; } 等价于 function foo() { return Promise.resolve(1); }