new Promise then
时间: 2025-01-07 07:04:54 浏览: 4
### JavaScript `new Promise` 使用方法及 `then` 链式调用
在 JavaScript 中,可以通过 `new Promise()` 构造函数创建一个新的 Promise 实例。构造函数接收一个执行器函数作为参数,该执行器函数有两个参数:`resolve` 和 `reject` 函数。
当异步操作完成时,如果成功则调用 `resolve(value)`;如果有错误发生,则调用 `reject(error)`[^4]。
下面展示了一个简单的例子:
```javascript
const myPromise = new Promise((resolve, reject) => {
// 模拟网络请求或其他耗时任务
setTimeout(() => {
const success = true;
if (success) {
resolve("操作成功");
} else {
reject("操作失败");
}
}, 1000);
});
```
一旦有了一个 Promise 实例之后,就可以使用 `.then(onFulfilled, onRejected)` 方法来处理这个 Promise 的状态变化。`.then` 接收两个可选的回调函数作为参数,分别用于处理 fulfilled(已完成)和 rejected(已拒绝)两种情况下的逻辑[^1]。
对于链式调用来说,每次调用 `.then()` 返回的是一个新的 Promise 对象,因此可以在其后面继续调用另一个 `.then()` 来构建更复杂的流程控制结构[^2]。
这里给出一段完整的代码片段说明如何实现并链接多个 Promises:
```javascript
myPromise
.then(result => {
console.log(`第一次处理的结果: ${result}`);
return "第二次处理的数据";
})
.then(secondResult => {
console.log(`第二次处理后的结果: ${secondResult}`);
return "第三次处理的数据";
})
.then(thirdResult => {
console.log(`最终结果: ${thirdResult}`);
})
.catch(err => {
console.error(`捕获到错误: ${err}`);
});
```
这段代码展示了如何利用 `new Promise` 创建自定义的 Promise 并通过 `.then()` 进行链式调用来顺序化地处理一系列异步操作。同时,在整个链条最后加上了 `.catch()` 以便于集中处理可能发生的任何异常状况。
阅读全文