简述Promise 的构造函数?
参考答案:
Promise的构造函数是创建Promise对象的主要方法。以下是关于Promise构造函数的基本概述:
-
参数:Promise构造函数接受一个函数作为参数,这个函数通常被称为"executor"函数。这个executor函数有两个参数,通常被命名为
resolve
和reject
,它们是两个函数。resolve
:当异步操作成功时,会调用这个函数,并将异步操作的结果作为参数传递给它。这会导致Promise对象的状态从"pending"(未完成)变为"fulfilled"(已解决)。reject
:当异步操作失败时,会调用这个函数,并将失败的原因(通常是一个错误对象)作为参数传递给它。这会导致Promise对象的状态从"pending"(未完成)变为"rejected"(已拒绝)。
-
状态:Promise对象有三种可能的状态:
pending
(等待中)、fulfilled
(已实现)和rejected
(已拒绝)。一旦Promise对象的状态从pending
变为fulfilled
或rejected
,这个状态就不会再改变。 -
执行:当Promise构造函数被调用时,它会立即创建一个新的Promise对象,其初始状态为
pending
。然后,它会同步地执行executor函数。这意味着,在Promise对象被创建之后,executor函数会立即执行,而不是等到微任务队列中的其他任务执行完毕后再执行。
这是使用Promise构造函数创建Promise对象的一个基本示例:
let promise = new Promise((resolve, reject) => {
// 这里是异步操作
setTimeout(() => {
if (/* 异步操作成功 */) {
resolve(/* 异步操作的结果 */);
} else {
reject(/* 失败的原因 */);
}
}, 1000);
});
在这个示例中,Promise构造函数接受一个executor函数作为参数。这个executor函数会在Promise对象被创建后立即执行。如果异步操作成功,它会调用resolve
函数,并传递异步操作的结果作为参数。如果异步操作失败,它会调用reject
函数,并传递失败的原因作为参数。然后,其他代码可以通过调用promise.then()
或promise.catch()
来处理这个Promise对象。