首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Promise.Resolve的用途是什么?

Promise.Resolve的用途是什么?
EN

Stack Overflow用户
提问于 2016-01-27 07:36:14
回答 2查看 417关注 0票数 3

我正在经历Angular2启动。

在名为“app/crisis-center/Crisis.service.ts”的文件中:https://angular.io/resources/live-examples/router/ts/plnkr.html

他们有这样一句话:

代码语言:javascript
复制
var crisesPromise = Promise.resolve(crises);

这样做的目的到底是什么?我已经了解了Promise.Resolve JavaScript的一般用法,但仍然不太理解为什么要在这里使用它。

它仅仅是以类似于Singleton的方式包装危机数组的实例吗?我看不到直接访问危机数组的好处或目的。

EN

回答 2

Stack Overflow用户

发布于 2016-01-27 07:38:20

仅仅是以类似于单例的方式包装危机数组的实例吗?我看不到直接访问危机数组的好处或目的。

它是在你已经知道答案的时候创建一个承诺。主要用例: API的消费者希望您返回一个promise。但是既然您已经知道了答案,那么您可以使用Promise.resolve来创建一个已经解析的promise并返回它。

票数 8
EN

Stack Overflow用户

发布于 2016-01-27 11:01:38

如果你看一下hero-list.component.ts

代码语言:javascript
复制
ngOnInit() {
    this._service.getHeroes().then(heroes => this.heroes = heroes)
}

它们调用返回Promise的服务方法getHeroes,然后在返回的promise上调用then方法,包括告诉promise对象在解析后要做什么的回调。

hero.service.ts中,它们将heroes作为本地数组,并且它们不必执行服务器调用,但在实际的应用程序中,您不会在这里拥有此数据,您将调用远程服务器来获取这些数据,因此,如果您将数组直接返回,而不是用Promise包装它,将来当您将服务更改为调用真正的http方法时,您必须同时更改服务和所有使用它的组件,以接收Promise而不是数组。

通过将本地数组包装到Promise中,您可以确保组件上的代码已经与Promise一起工作,所以promise是同步还是异步解析都无关紧要,您也不关心它在这两种情况下都会正确工作,所以您可以从使用本地模拟数据测试服务开始,将数据返回到promise中,然后通过修改服务而不涉及使用该服务的所有组件,将它们更改为真正的http调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35026099

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档