JavaScript Promise构造函数



每当我们创建一个新的promise类时,我们都会这样做:

const promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("success");
}, 4000)
});
promise.then((result) => console.log(result));

所以,这是我思考背后事物如何运作的方式:

  1. Promise将有一个箭头函数的构造函数
  2. setTimeout将在指定的时间限制内运行resolve('success')函数,并返回一个具有resolved状态的Promise(我认为这是另一个类,因为它有构造函数(
  3. then()函数将运行第一步传递的任何函数(因此,在本例中,返回Promise的匿名箭头函数(

首先,为什么我们可以传递解析并将其用作setTimeout中的函数?我想我们甚至还没有宣布,这不是窗口的一部分。

第二,有人能纠正我的思维方式吗(这样也许可以帮助我解释这个过程中发生了什么(?

Promise将有一个箭头函数的构造函数。

不确定你的意思。

setTimeout将在指定的时间限制内运行解析("成功"(函数,并返回具有已解析状态的Promise

否。setTimeoutresolve和传递给new Promise的箭头函数都不会返回promise。

then()函数将运行第一步上传递的任何函数

否。传递给new Promise的函数(称为执行器(会立即被调用。不是来自.then()调用。请注意,即使您没有调用.then(),或者以后只调用,或者多次调用,它也会被调用。

为什么我们可以传递resolve并将其用作函数?我想我们甚至还没有宣布,这不是窗口的一部分。

new Promise构造函数创建resolvereject函数。它们只更改promise的内部状态,以及在promise对象上注册的日程处理程序。

您可能想看看这个示例实现,或者promise/defer库是如何实现的?。

最新更新