我使用angular $ http从数据库中获取一些数据。我可以成功获取数据,但在我向前端的用户显示数据之前,我想循环访问数据并进行一些更改。
extension SKNode {
/// Find point in node relative to it's containing SKView
/// so that it can be further converted relative to other views.
func pointInContainingView(_ point:CGPoint) -> (SKView, CGPoint)? {
guard let scene = scene, let view = scene.view else {
return nil
}
let pointInView.convertPoint(toView: convert(point,toNode:scene))
return (view, pointInView)
}
}
我的循环功能:
$http.get("/getList").then(function(data ̶,̶ ̶s̶t̶a̶t̶u̶s̶ ) {
// setting data to the front end
$scope.returnedData = data.data;
},function errorCallback(response) {
console.log(response.data.message)
});
}
我如何链接Angular promises,一旦我获得数据,我可以遍历它并根据需要进行更改,之后将其设置为前端。
答案 0 :(得分:0)
在将结果存储到$scope
变量之前,只需处理获取的数据:
$http.get("/getList")
.then(function(data, status) {
if(data.data.modules.length > 0) {
for(var i=0; i<=data.data.modules.length; i++) {
if(data.data.modules[i].carType === 2) {
data.data.modules[i].carModel = data.data.modules[i].carModel / 52;
} else if(data.data.modules[i].truckType === 2){
data.data.modules[i].truckModel = data.data.modules[i].truckModel / 52;
}
}
}
// Storing the result
$scope.returnedData = data.data;
})
.catch(function(error) {
console.error(error)
});
类似的代码检查存在以及modulesWithCartypeEqualToTwo
和modulesWithTrucktypeEqualToTwo
数组,以便更舒适地调试:
$http.get("/getList")
.then(function(data, status) {
var modulesWithCartypeEqualToTwo = [];
var modulesWithTrucktypeEqualToTwo = [];
if(data.data.modules) {
if(data.data.modules.length > 0) {
for(var i=0; i<=data.data.modules.length; i++) {
if(data.data.modules[i].carType === 2) {
modulesWithCartypeEqualToTwo.push(data.data.modules[i])
data.data.modules[i].carModel = data.data.modules[i].carModel / 52;
} else if(data.data.modules[i].truckType === 2) {
modulesWithTrucktypeEqualToTwo.push(data.data.modules[i])
data.data.modules[i].truckModel = data.data.modules[i].truckModel / 52;
}
}
}
}
console.log('modules with carType === 2');
console.log(modulesWithCartypeEqualToTwo);
console.log('modules with truckType === 2');
console.log(modulesWithTrucktypeEqualToTwo);
// Storing the result
$scope.returnedData = data.data;
})
.catch(function(error) {
console.error(error)
});
答案 1 :(得分:0)
从承诺链接返回数据到.then
方法处理函数:
var promise = $http.get("/getList").then(function(response ̶,̶ ̶s̶t̶a̶t̶u̶s̶ ) {
// setting data to the front end
$scope.returnedData = response.data;
͟r͟e͟t͟u͟r͟n͟ response.data;
},function errorCallback(response) {
console.log(response.data.message)
//IMPORTANT
throw response;
});
然后从返回的承诺链:
promise.then(function(data) {
if(data.modules.length > 0){
for(var i=0; i<=data.modules.length; i++){
//code ...
};
};
});
在拒绝处理程序中使用throw statement很重要。否则承诺将被转换从被拒绝的承诺转变为履行承诺。