首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >框架接受承诺或执行者函数。

框架接受承诺或执行者函数。
EN

Software Engineering用户
提问于 2017-05-02 01:58:20
回答 1查看 86关注 0票数 0

在设计框架API时,最好是接受Promises或者有执行者functions,并在需要时让框架构建承诺。

允诺API由语法定义:

代码语言:javascript
运行
复制
new Promise( /* executor */ function(resolve, reject) { ... } );

我尝试过这两种方法,我倾向于让框架用户实现function(resolve, reject)来进行数据检索。我认为一旦承诺被解决,我就不能真正地重用它,所以如果我想重新加载数据,我需要重新执行executor函数。

EN

回答 1

Software Engineering用户

发布于 2017-05-04 22:59:42

我假设您不会在API中实际定义Promise函数;也就是说,您将使用已经在JavaScript中定义的实现。

这么说吧,MDN说

允诺对象用于异步计算。承诺代表的是一种价值,这种价值现在、将来、或永远都是可用的。..。一个悬而未决的承诺可以用一个值来实现,也可以用一个原因(错误)拒绝。当这两种选项中的任何一种发生时,都会调用由诺言的然后方法排队的相关处理程序。

在这里,我们可以看到,承诺主要是通过它的方法来交互的,因此决定选择哪个实现并不重要,只要实现/拒绝是可以得到的。

我认为一旦承诺被解决,我就不能真正地重用它,所以如果我想重新加载数据,我需要重新执行executor函数。

承诺的价值是一件尚未确定的事情,但当它确定时,它可以像任何其他变量一样被访问。来自MDNPromise.resolve()

Promise.resolve( value )方法返回一个用给定值解析的允诺对象。如果该值是可处理的(即有一个“然后”方法),则返回的承诺将“遵循”该承诺,并采用其最终状态;否则返回的承诺将与该值一起履行。

所以,比如说,

代码语言:javascript
运行
复制
var thisPromise = somePromise();

//fulfilled or rejected
thisPromise.then(function(value) {
 console.log("this is the value: "+value);
}).catch(function(reason) {
 console.log("was rejected with reason: "+reason);
});

//... some code later assuming you don't change thisPromise

thisPromise.then(function(value) {
 console.log("this is the same value as before: "+value);
}).catch(function(reason) {
 console.log("was rejected with reason: "+reason);
});

如果说重载数据意味着需要更新承诺检索的数据,那么是的,需要重新执行才能检索新的数据。

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

https://softwareengineering.stackexchange.com/questions/348171

复制
相关文章

相似问题

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