[英]angular, correct way for a function callback
我正在用angular js为我的应用程序编写ItemProvider
。 我选择了一项服务。
app.factory('ItemProvider', function($http) {
var url = "http://localhost:7888/api.php/json?";
return {
get_data: function() {
$http.get(url).
success(function(data,status,headers,config) {
json = data;
console.log("app returned ok");
console.log(json);
callback(json);
}).
error(function(data,status,headers,config) {
console.log("Error getting data from app!");
json = data;
callback(json);
});
callback = function(json) {
console.log("callback");
return json;
}
console.log("already done");
}
};
});
当然这里发生的是get_data
在通过$http
返回后端的实际调用返回之前立即返回...
我如何正确地拥有一个get_data
函数,该函数将从后端返回数据? 我尝试添加回调(请参见上面的代码),但我意识到在调用它时, get_data
已经完成了...
$ http被硬编码为只能异步工作,这意味着您唯一的选择就是牢记这一点。 因此,get_data不可能直接返回数据,而是必须接受回调或返回promise。 我认为 ,诺言路线要容易得多。
app.factory('ItemProvider', function($http) {
var url = "http://localhost:7888/api.php/json?";
return {
get_data: function(url) {
return $http.get(url);
}
};
});
用法示例:
//...
ItemProvider.get_data('/items')
.success(function (items) {
console.log(items);
})
.error(function () {...});
//...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.