乐闻世界logo
搜索文章和话题

为什么javascript ES6 Promises在resolve后继续执行?

5 个月前提问
5 个月前修改
浏览次数24

1个答案

1

在JavaScript中,ES6 Promises是用来处理异步操作的一种机制。当我们说一个Promise在resolve后继续执行,其实是指在Promise被resolve之后,它后面链式调用的then、catch或finally等方法仍会继续执行。

这种设计主要是为了增强代码的组织和可读性,让异步操作更加方便管理。Promise允许我们将异步代码写得像同步代码一样顺序执行,通过then方法可以串联多个异步操作,每个操作都可以依赖上一个操作的结果。当一个Promise被resolve时,它实际上是执行了then中提供的回调函数。

来看一个具体的例子:

javascript
function getUser(userId) { return new Promise((resolve, reject) => { setTimeout(() => { console.log('获取用户数据'); resolve({ userId: userId, username: "John" }); }, 1000); }); } function getServices(user) { return new Promise((resolve, reject) => { setTimeout(() => { console.log('获取用户服务'); resolve(['Email', 'VPN', 'CDN']); }, 1000); }); } function getServiceCost(services) { return new Promise((resolve, reject) => { setTimeout(() => { console.log('计算服务成本'); resolve(services.length * 100); }, 1000); }); } getUser(101) .then(getServices) .then(getServiceCost) .then(console.log);

在这个例子中,getUser函数首先被调用并返回一个Promise。一旦这个Promise被resolve(即用户数据被获取到),它就会执行 getServices函数。同理,getServices函数返回的Promise解决后,会调用 getServiceCost函数。最后输出服务成本。

整个流程是连贯的,尽管每个操作都是异步的,但通过Promise的链式操作,它们看起来像是顺序执行的。这就是Promise在resolve之后继续执行的原因和好处。这种模式非常有助于处理复杂的异步逻辑,使代码更加清晰和易于维护。

2024年7月28日 18:57 回复

你的答案