已合作成功的客户
遍及全国及海外
中国
杭州,绍兴,宁波,湖州,嘉兴,温州,台州,上海,北京,南京,苏州,常州,无锡,长沙,青岛,江西,台湾,南宁,海南,成都,哈尔滨,深圳,香港,沈阳 ...
海外
美国,加拿大,丹麦,澳大利亚,新加坡,法国,智利,日本,英国 ...
合作咨询
4001-355-360
JavaScript Promise:理解异步操作的核心参数
作者:admin
来源:lanyunwork
时间:2025-12-01
分享到:
在JavaScript中,Promise是一个表示异步操作最终完成或失败的对象。它解决了传统的回调地狱问题,让异步代码更易于编写和维护。Promise有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。
创建Promise时,需要传入一个执行器函数(executor):
new Promise(executor)
executor函数参数:
resolve函数:当异步操作成功时调用,将Promise状态改为fulfilled
reject函数:当异步操作失败时调用,将Promise状态改为rejected
这个执行器函数会立即执行,它封装了异步操作,并在适当时机调用resolve或reject。
then()是Promise最常用的方法,它接收两个可选参数:
promise.then(onFulfilled, onRejected)
第一个参数:onFulfilled函数
当Promise状态变为fulfilled时自动调用
接收一个参数:resolve函数传递的值(结果)
返回的值会成为新Promise的解决值
第二个参数:onRejected函数(可选)
当Promise状态变为rejected时自动调用
接收一个参数:reject函数传递的值(错误原因)
通常用于处理特定Promise的错误
catch()是错误处理的专用方法,相当于then(null, onRejected):
promise.catch(onRejected)
onRejected函数:
捕获Promise链中任何未被处理的错误
接收一个参数:被拒绝的原因(错误信息)
建议使用catch()而不是then()的第二个参数进行错误处理,这样更清晰
无论Promise最终状态如何,finally()都会执行:
promise.finally(onFinally)
onFinally函数:
不接收任何参数(不知道Promise是成功还是失败)
常用于清理操作,如关闭加载指示器
返回的Promise会继承原Promise的状态和值
Promise.resolve(value):创建一个已解决的Promise,参数为解决值
Promise.reject(reason):创建一个已拒绝的Promise,参数为拒绝原因
接收一个Promise数组,当所有Promise都成功时返回结果数组,任意一个失败则立即拒绝。
接收一个Promise数组,返回第一个解决或拒绝的Promise的结果。
接收一个Promise数组,等待所有Promise完成(无论成功失败),返回描述每个Promise结果的对象数组。
链式调用:每个then/catch/finally都返回新Promise,可以继续调用
值传递:每个处理函数的返回值会传递给链中的下一个处理函数
错误冒泡:错误会沿着Promise链向下传递,直到被catch捕获
理解Promise的参数是掌握JavaScript异步编程的关键。构造函数中的resolve/reject决定了Promise的最终状态;then()的onFulfilled/onRejected处理成功和失败情况;catch()专门处理错误;finally()执行最终清理。这些参数共同构成了Promise强大的异步处理能力,使代码更加清晰和可维护。
Promise的参数设计体现了关注点分离的原则:创建Promise时关注异步操作本身,使用Promise时关注成功和失败的处理逻辑,这种分离让异步代码的逻辑更加清晰。
获取方案