Promise.then
时间: 2023-08-15 15:13:10 浏览: 122
Promise.then是JavaScript中用于处理Promise对象的方法之一。它用于指定当Promise对象状态变为已完成时应该执行的回调函数。回调函数会接收到Promise对象传递的解决值作为参数。
例如,假设你有一个返回Promise对象的函数,你可以使用Promise.then来处理该Promise对象的解决值。下面是一个简单的示例:
```javascript
// 创建一个返回Promise对象的函数
function fetchData() {
return new Promise((resolve, reject) => {
// 模拟异步操作
setTimeout(() => {
const data = '这是从远程服务器获取到的数据';
resolve(data); // 将数据作为解决值传递给回调函数
}, 2000);
});
}
// 使用Promise.then处理解决值
fetchData().then((data) => {
console.log(data); // 输出:这是从远程服务器获取到的数据
});
```
在上面的示例中,fetchData函数返回一个Promise对象,我们可以使用Promise.then方法来在Promise对象解决时执行回调函数,并将解决值作为参数进行处理。
相关问题
promise.then
`promise.then()` 是 Promise 对象的方法之一,用于在 Promise 对象成功执行后(即状态变为 resolved)执行回调函数,并返回一个新的 Promise 对象,该对象会包含回调函数的返回值。
该方法接收两个参数,第一个参数是成功回调函数,第二个参数是失败回调函数。成功回调函数接收一个参数,即 Promise 对象成功执行的结果;失败回调函数接收一个参数,即 Promise 对象失败的原因。
示例代码:
```javascript
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('success');
}, 1000);
});
promise.then((result) => {
console.log(result); // 'success'
}).catch((error) => {
console.error(error);
});
```
在上述代码中,`promise.then()` 方法会等待 Promise 对象成功执行后执行回调函数,输出结果为 `'success'`。如果 Promise 对象执行失败,则会执行失败回调函数,输出失败原因。
Promise.resolve()和new Promise.then()
`Promise.resolve()` 和 `new Promise.then()` 都是 JavaScript 中处理异步操作的 Promise 对象相关方法,它们在 Promise 处理流程中扮演着关键角色。
1. `Promise.resolve(value)`: 这是一个静态方法,用于创建一个已经解析(fulfilled)的 Promise,其参数 `value` 将作为成功时返回的结果。如果你传递的值已经是 Promise,它会被直接返回,不需要额外的处理。这个方法常用于简化异步操作或者将非Promise结果转化为Promise。
```javascript
let resolvedValue = Promise.resolve('Hello');
// 或者
let alreadyAPromise = new Promise((resolve) => resolve('World'));
let convertedPromise = Promise.resolve(alreadyAPromise); // 返回 alreadyAPromise
```
2. `new Promise.then(onFulfilled, onRejected)`: 这是一个构造函数,用于创建一个新的 Promise。当你调用 `then()` 方法时,你可以指定两个函数:`onFulfilled` 在 Promise 解决(fulfilled)时执行,`onRejected` 在 Promise 拒绝(rejected)时执行。这些函数通常用于处理异步操作的结果。
```javascript
let asyncTask = new Promise((resolve, reject) => {
setTimeout(() => resolve('Success'), 1000);
// 或者
// setTimeout(() => reject('Error'), 1000);
});
asyncTask.then((result) => {
console.log(result); // 输出 'Success' after 1 second
}, (error) => {
console.error(error); // 如果出现错误,这里会被调用
});
```
阅读全文