赋值后的回调函数
Callback function after an assignment
我正在写一个angular应用程序,angular对关注点的分离非常有意见。
我有一个控制器和一个服务,我不希望我的代码破坏关注点的分离。
在我的控制器中,我试图从一个web服务获取数据,然后用从第一个web服务接收的数据获取所有其他web服务的数据。由于javascript异步的性质,我无法找到一个好的方法来做到这一点,而不必在关注点分离方面越界。
这是一个展示它的jsfiddle:
http://jsfiddle.net/yak2m1ve/
现在请记住,我正在努力寻找一个不会破坏SoC的优雅解决方案,而不是让它工作的肮脏黑客。
//controller
var x = fn1();
var y = fn2(x);
alert(y);
//service
function fn1(){
setTimeout(function(){
return '123'; //web request example
}, 1000);
}
function fn2(code){
return 'asdfb' + code;
}
尽管plunker用普通函数调用来表示问题,但很明显,您将进行web服务调用。
在这种情况下,您需要使用Angular Promise API。
例如,假设您应该执行以下操作序列。
检索电影详细信息。
取回它的星型。
将响应分配给Scope变量。
在您的服务中,您将拥有
this.getMovie = function(movie) {
return $http.get('/api/v1/movies/' + movie)
.then(
function (response) {
return {
title: response.data.title,
cost: response.data.price
});
});
};
this.starCast = function(movie) {
return $http.get('/api/v1/movies/' + movie)
.then(
function (response) {
return {
title: response.data.title,
cost: response.data.price
});
});
};
在你的控制器中:
$scope.getMovie = function(movie) {
service.getMovie(movie)
.then(function(movieData) {
service.getStarCast(movieData).then(function(response) {
$scope.starCast = response;
});
});
};
相关文章:
- 如何将一个JavaScript函数回调为多个函数
- Meteor:异步函数回调异常:onAfterAction
- 从类方法中的 ajax post 函数回调函数更改 javascript 类属性
- jQuery动画函数回调错误
- jquery在html属性中添加函数回调,以便在其他事件中调用
- jquery getjson 函数:回调返回错误的字符串
- postMessage - 多个 postMessage 事件/函数/回调
- 在 Promise 调用的错误函数回调后附加对象的用法是什么
- 单击事件后的 JavaScript 函数回调
- 设置超时函数回调静态变量
- Jquery UI 模式匿名函数回调以打开对话框
- 函数回调、局部变量和 chrome.storage.sync.get
- Jquery Ajax 没有拾取选项参数中指定的函数回调
- 如何在 javascript 中进行函数回调
- 用函数回调封装JavaScript
- jQuery JavaScript嵌套异步函数回调
- Node.js-匿名函数回调
- 函数回调超出范围
- php代码的Javascript函数回调
- 如何使用函数回调在更改时提交表单