我正在努力克服JavaScript(特别是AngularJS)中的承诺。
我在服务中有一个函数,我们称它为fooService
,它检查是否已加载一些数据。如果有,我只希望它返回,否则,我们需要加载数据并返回promise:
this.update = function(data_loaded) {
if (data_loaded) return; // We've loaded the data, no need to update
var promise = Restangular.all('someBase').customGet('foo/bar').then(function(data) {
// Do something with the data here
}
return promise;
}
我有另一个函数,然后调用如下update
函数fooService
:
fooService.update(data_loaded).then(function() {
// Do something here when update is finished
})
我在这里的问题是,如果我们不需要在update
函数中加载数据,则不会返回promise,因此.then()
在其他函数中不会调用the
。这里的方法应该是什么-基本上,update()
如果我们不需要从Restangular调用中获取数据,我想立即从该函数返回一个已解决的Promise?
当前公认的答案过于复杂,并且滥用了推迟的反模式。这是一个更简单的方法:
this.update = function(data_loaded) {
if (data_loaded) return $q.when(data); // We've loaded the data, no need to update
return Restangular.all('someBase').customGet('foo/bar')
.then(function(data) {
// Do something with the data here
});
};
或者,甚至更进一步:
this._updatep = null;
this.update = function(data_loaded) { // cached
this._updatep = this._updatep || Restangular.all('someBase') // process in
.customGet('foo/bar'); //.then(..
return this._updatep;
};
问题内容: 我的服务是: 我通过以下方式在我的文件中调用它: 但是,它抱怨这不是一个功能。我不退还已解决的承诺吗? 问题答案: 从您的服务方式: 在您的控制器中:
input Type="hiddit"name="RM"value="0"结束交易后,Paypal返回到input Type="hiddit"name="return"中定义URL(不包括GET中的支付变量), 如果我设置输入类型=“hidden”name=“rm”value=“2”在结束交易后,在输入类型=“hidden”name=“return”中定义的URL处Paypal返回,并在POST中
本文向大家介绍使用AOP的@Around后无返回值的解决,包括了使用AOP的@Around后无返回值的解决的使用技巧和注意事项,需要的朋友参考一下 经测试,是环绕通知改变了返回值,切面方法需要有返回值,来代替被代理方法返回结果 改成如下即可: 让其执行后的结果返回即可。 补充:spring aop @Around 返回参数值为空 在做 spring 项目中用到aop,拦截前端请求后AOP中@Aro
免责声明: 这不是onrequestpermissionsresult授权结果的重复始终-1,因为OP认识到它没有在清单中添加权限。 这也不是onrequestpermissionsresult在拒绝权限后立即返回的重复,因为OP在清单中犯了拼写错误。 我正在开发一个应用程序,需要安装其他应用程序(我们在内部开发,并通过web服务在我们的内部网上服务)。我无法授予安装该APK的权限。 以下是我到目
问题内容: 我正在尝试编写一个返回诺言的函数。但是有时候,所请求的信息会立即可用。我想将其包装在一个承诺中,这样消费者就不必做出决定了。 并像这样使用它: 问题在于,对于预解析的Promise不会执行回调。这是合法的事情吗?有没有更好的方法来处理这种情况? 问题答案: 简短的答案:是的,您可以 在返回AngularJS承诺之前将其解析,并且其行为将与您期望的一样。 来自JB Nizet的Plunk
如果用非空数组调用promise.all或promise.race,它们将返回一个挂起的promise: 为什么promise。所有功能都是这样设计的?似乎没有很好的理由不一致,但也许我错过了什么。