深入浅出,掌握 JavaScript then() 方法186


在 JavaScript 中,then() 方法用于处理异步操作的结果。它是一个 Promise 对象的方法,返回一个新的 Promise 对象,用于处理先前的 Promise 对象成功或失败的结果。

then() 方法的语法(onFulfilled, onRejected)

* promise:要处理结果的 Promise 对象。
* onFulfilled:一个回调函数,在 promise 成功解决时执行。它接收一个参数,该参数是 promise 成功的结果。
* onRejected:一个回调函数,在 promise 被拒绝时执行。它接收一个参数,该参数是 promise 被拒绝的原因。

then() 方法的工作原理then() 方法创建一个新的 Promise 对象,并在此新的 Promise 对象上附加一个回调函数。当原来的 Promise 对象被解决时,回调函数就会被执行。
如果原始的 Promise 对象成功解决,则 onFulfilled 回调函数会被执行,并且其参数将是 Promise 对象成功解决的结果。新的 Promise 对象将以该结果作为自己的解决结果。
如果原始的 Promise 对象被拒绝,则 onRejected 回调函数会被执行,并且其参数将是 Promise 对象被拒绝的原因。新的 Promise 对象将以该原因作为自己的拒绝原因。

then() 方法的链式调用then() 方法可以链式调用,这意味着可以将多个 then() 方法连接在一起,以依次处理 Promise 对象的结果。
例如,以下代码使用 then() 方法链式调用来获取用户的姓名,然后使用该姓名来获取他们的头像 URL:
fetchUser()
.then(user => ())
.then(name => getAvatarUrl(name))
.then(avatarUrl => displayAvatar(avatarUrl))
.catch(error => handleError(error))

then() 方法的返回值then() 方法返回一个新的 Promise 对象。如果第一个回调函数(onFulfilled)返回一个 Promise 对象,则新的 Promise 对象将等待该 Promise 对象解决。否则,新的 Promise 对象将使用第一个回调函数的返回值作为自己的解决结果。

与 catch() 方法的区别then() 方法和 catch() 方法都是用于处理 Promise 对象的结果,但它们有不同的用途。
* then() 方法:用于处理 Promise 对象成功解决或被拒绝的情况。
* catch() 方法:仅用于处理 Promise 对象被拒绝的情况。
因此,如果需要处理 Promise 对象成功解决和被拒绝的情况,可以使用 then() 方法。如果只需要处理 Promise 对象被拒绝的情况,可以使用 catch() 方法。

示例以下是一个使用 then() 方法处理 Promise 对象的示例:
fetch("/api/users")
.then(response => ())
.then(users => {
// 处理用户列表
})
.catch(error => {
// 处理错误
});

在这个示例中,fetch() 函数返回一个 Promise 对象,用于获取来自 API 的用户列表。然后,将 Promise 对象传递给 then() 方法,该方法将返回一个新的 Promise 对象,用于解析响应中的 JSON 数据。然后,将新的 Promise 对象传递给另一个 then() 方法,该方法将返回一个新的 Promise 对象,用于处理用户列表。最后,将新的 Promise 对象传递给 catch() 方法,该方法将返回一个新的 Promise 对象,用于处理任何错误。

then() 方法是 JavaScript 中用于处理异步操作结果的强大工具。它使我们能够轻松地处理 Promise 对象成功或失败的结果,并且可以链式调用以创建复杂的操作。

2024-12-22


上一篇:JavaScript 中的 confirm() 方法:交互式确认提示

下一篇:如何在 JavaScript 中进行字符串替换