JavaScript中await处理Promise时,其回调参数由谁传递、传递什么?
关于Promise构造函数中resolve/reject参数的疑问解答
1. 是谁向Promise的匿名函数传递参数?
不是await语法,是JavaScript的Promise构造函数本身。当执行new Promise(executor)时,Promise构造函数会自动调用你传入的执行器函数(也就是那个匿名函数),并将resolve和reject作为参数传入其中。await仅用于等待Promise实例的状态变更,和这两个参数的传递逻辑没有关系。
2. 具体传递的是什么?
传递的是两个由JavaScript引擎内置实现的函数:
resolve:调用该函数会将Promise的状态从pending(等待中)切换为fulfilled(已完成)。如果调用时传入了值,这个值会成为Promise的成功结果,后续可通过await获取或.then()回调接收。reject:调用该函数会将Promise的状态从pending切换为rejected(已拒绝),通常传入一个Error对象作为拒绝原因,这个原因会被try/catch块捕获或.catch()回调接收。
补充说明:这两个函数是Promise机制的核心部分,由语言层面提供,目的是让开发者能在异步操作完成或失败时,手动标记Promise的状态,无需自行定义这两个函数。
内容的提问来源于stack exchange,提问作者bavaza
相关产品推荐
相关产品推荐

