在 Promise 的使用中,.then
方法是处理 Promise 状态变化的常用方式,这个方法接受两个参数:onFulfilled
和 onRejected
,其中 onFulfilled
是 Promise resolve 时触发的回调函数,onRejected
是 Promise reject 时触发的回调函数。在这两个回调函数中,我们可以使用 return
和 throw
语句来控制 Promise 的状态变化。
return 的使用方法
当我们在 onFulfilled
回调函数中使用 return
语句时,它会将返回的值作为一个新的 Promise 对象的 resolve 值。这样,接下来的 then
方法就会得到这个新的 Promise 对象的 resolve 值:
Promise.resolve(1) .then(num => { console.log(num); // 1 return num + 1; }) .then(num => { console.log(num); // 2 });
在这个例子中,第一个 then
中的回调函数返回了一个新的 Promise 对象的 resolve 值 num + 1
,这个 Promise 对象的状态变为 resolved,然后接下来的 then
方法就会得到它的 resolve 值 2
。
throw 的使用方法
当我们在 onFulfilled
或 onRejected
回调函数中使用 throw
语句时,它会将抛出的值作为一个新的 Promise 对象的 reject 值。这样,接下来的 catch
方法就会得到这个新的 Promise 对象的 reject 值:
Promise.resolve(1) .then(num => { console.log(num); // 1 throw new Error('Error occurred'); }) .catch(error => { console.error(error); // Error: Error occurred });
在这个例子中,第一个 then
中的回调函数抛出了一个错误,这个错误被封装成了一个新的 Promise 对象的 reject 值,然后接下来的 catch
方法就会得到它的 reject 值 Error: Error occurred
。
注意事项
在 .then
和 .catch
方法中,如果我们在回调函数中不显式地返回任何内容,则返回值是 undefined
,这个值并不会影响 Promise 的状态变化。而如果我们在回调函数中抛出一个错误,但是没有 .catch
方法来处理它,这个错误就无法被捕获,并且可能会导致程序崩溃。
因此,我们需要注意以下几个事项:
- 在回调函数中必须显式地返回一个值或抛出一个错误
- 在
.then
或.catch
方法中必须注重错误处理,避免程序崩溃
总结
本文介绍了在 Promise 的使用中,.then
方法中函数的 return
和 throw
语句的使用方法,以及注意事项。正确使用 return
和 throw
语句可以帮助我们更好地控制 Promise 的状态变化,精简代码,提高可读性。 我们需要注重错误处理,避免程序崩溃,这也是一个良好的编程习惯。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64edd836f6b2d6eab37fd03d