【发布时间】:2019-03-15 00:31:18
【问题描述】:
我在 salesforce visualforce 页面中使用 Angular JS。我编写了这段代码来从服务器获取一些信息。这是一个异步调用。
var deferred = $q.defer();
Visualforce.remoting.Manager.invokeAction( //You can related this with any asynchronous service
'{!$RemoteAction.somepage.someMethod}',
param,
function(result,event){
if(event.type=='exception'){
deferred.reject(event.message);
}
else{
deferred.resolve(result);
}
}
);
return deferred.promise;
现在有人对我说“使用 promise 而不是 deferred”(但没有解释原因。)这段代码工作得非常好,但它似乎是一些反模式的方式(我不确定如何但我在某处读过它。)。现在我看到了许多文档和资源,并试图找出最好的方法来做到这一点。
您能否解释一下为什么这不是一个好方法?另外我怎样才能用最好的方法重写这段代码?
如果您用简单的语言提供答案会非常有帮助,因为我对 Angular 还是很陌生,而且我访问过很多链接,所以请不要向我提供更多链接。谢谢。
编辑 1:
我尝试实现ES6 implementation,但在.then 函数中,当我只是更新一个变量时,它没有运行摘要循环意味着更改不会反映在 UI 上,但它与我的代码和代码完美配合由@smnbbrv 提供。你能提供为什么会这样吗?
【问题讨论】:
标签: angularjs promise deferred