简介:本文介绍了JavaScript Promise的then和catch方法的使用和注意事项。then方法用于处理异步操作成功的结果,可以链式调用;catch方法用于处理异步操作失败的结果,建议在每个Promise后面都加上一个catch方法来处理可能的错误。
Promise是JavaScript中用于处理异步操作的对象,它表示一个异步操作的最终完成或失败的结果。Promise对象有一个状态,一旦改变就不会再变。它可以是以下三种状态之一:pending(进行中)、fulfilled(已成功)或rejected(已失败)。
then和catch是Promise对象的方法,用于处理异步操作的结果。它们都接收一个回调函数作为参数,该回调函数在Promise的状态发生变化时被调用。
let promise = new Promise((resolve, reject) => {setTimeout(() => resolve('成功'), 1000);});promise.then((result) => {console.log(result); // 输出:'成功'});
在这个例子中,Promise在1秒钟后变为fulfilled状态,并返回一个字符串’成功’。然后,then方法中的回调函数被调用,并将’成功’打印到控制台。
需要注意的是,then方法可以链式调用。这意味着你可以将多个then方法链接在一起,每个then方法中的回调函数都会在前面的Promise状态发生变化时被调用。如果Promise的状态变为fulfilled,则回调函数将执行并返回一个新的Promise对象。如果Promise的状态变为rejected,则回调函数将抛出一个异常。
let promise = new Promise((resolve, reject) => {setTimeout(() => reject('失败'), 1000);});promise.catch((error) => {console.log(error); // 输出:'失败'});
在这个例子中,Promise在1秒钟后变为rejected状态,并返回一个字符串’失败’。然后,catch方法中的回调函数被调用,并将’失败’打印到控制台。
需要注意的是,如果在then方法之后没有调用任何其他方法(包括catch方法),则当Promise状态变为rejected时,回调函数将抛出一个异常。因此,为了避免异常被抛出,建议在每个Promise后面都加上一个catch方法来处理可能的错误。
另外,如果你想在处理异步操作的结果时进行某些操作,但不想等待异步操作完成,你可以使用async/await语法。async函数返回一个Promise对象,await关键字可以用来等待Promise的状态变为fulfilled或rejected,并返回相应的结果或错误。例如: