本文根据 Devhints / Promises 翻译。代码示例及版本范围沿用原文。
参考资料
简介
简介:JavaScript 快速参考 Promise API.
- Promise 使用指南 (developer.mozilla.org)
- Promise 文档 (developer.mozilla.org)
创建 Promise
new Promise((resolve, reject) => {
doStuff(() => {
if (success) {
resolve('good')
} else {
reject(new Error('oops'))
}
})
})
使用 new Promise 用于创建新的 Promise。
使用 Promise
promise
.then((result) => {
/* success */
})
.catch((error) => {
/* failure */
})
then() 当 Promise 成功(resolve)时执行函数。 catch() 当 Promise 失败(reject)时执行。
多个 Promise
const promises = [promise1(), promise2() /* ... */]
// Succeeds when all succeed
Promise.all(promises).then((results) => {
/* ... */
})
// Succeeds when one finishes first
Promise.race(promises).then((result) => {
/* ... */
})
转换其他 Promise
return Promise.resolve('result')
return Promise.resolve(promise)
return Promise.resolve(thenable)
return Promise.reject('reason')
Promise.resolve(result).then(() => {
/* ... */
})
Promise.resolve(val) 返回一个 Promise,该 Promise 会成功(resolve)并返回传入的值。