JavaScript thenable接口
时间: 2023-10-03 18:02:25 浏览: 57
在 JavaScript 中,Promise 对象实现了 thenable 接口,也就是说,任何实现了 then 方法的对象都可以被视为 Promise 对象使用。
thenable 接口的实现方式非常简单,只需要实现 then 方法并返回一个新的 thenable 对象即可。then 方法接受两个参数,分别是处理 Promise 对象解析结果的回调函数和处理 Promise 对象拒绝结果的回调函数。then 方法会返回一个新的 Promise 对象,可以使用 then 方法进行链式调用。
下面是一个实现 thenable 接口的例子:
```javascript
const thenable = {
then(resolve, reject) {
setTimeout(() => {
const value = Math.random();
if (value > 0.5) {
resolve(value);
} else {
reject(value);
}
}, 1000);
}
};
thenable.then(
value => console.log('Resolved:', value),
value => console.log('Rejected:', value)
);
```
在上面的例子中,我们定义了一个 thenable 对象,实现了 then 方法,并在方法中返回一个 Promise 对象。在 then 方法中,我们模拟了一个异步操作,并根据随机数的大小来决定 Promise 对象的解析结果。在调用 then 方法时,我们传入了处理 Promise 对象解析结果的回调函数和处理 Promise 对象拒绝结果的回调函数,然后使用 console.log 输出结果。当 Promise 对象解析完成时,将会执行第一个回调函数;当 Promise 对象被拒绝时,将会执行第二个回调函数。
虽然 thenable 接口没有 Promise 对象那么强大,但是它可以让我们更加灵活地管理异步操作,尤其是在需要与其他库或框架进行集成时,可以方便地使用 thenable 接口来实现异步操作的解耦。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)