AngularJS $q.defer 延迟对象实例

1、介绍

var deferred = $q.defer();// 声明延后执行,表示要去监控后面的执行

deferred.resolve(data);  // 声明执行成功,即http请求数据成功,可以返回数据了

deferred.reject(data);   // 声明执行失败,即服务器返回错误

return deferred.promise;   // 返回承诺,这里并不是最终数据,而是访问最终数据的API

2、方法定义

var getList = function () {
    var result = [];
    var allData = [];
    var parentData = [];

    var deferred = $q.defer();

    var db = window.sqlitePlugin.openDatabase({ name: 'xunhu.db',location: 'default' });
    db.transaction(function (tx) {
        tx.executesql('SELECT * FROM ShoppingCart',[],function (tx,rs) {
            for (var i = 0; i < rs.rows.length; i++) {
                allData.push(rs.rows.item(i));
            }
            //alert(allData.length);
        });
        tx.executesql('SELECT DISTINCT(VendorId),VendorName FROM ShoppingCart',rs) {
            for (var j = 0; j < rs.rows.length; j++) {
                parentData.push(rs.rows.item(j));
            }
            //alert(parentData.length);
        });
    },function (error) {
        deferred.reject(error);
        console.log('transaction error: ' + error.message);
    },function () {
        var jsonData = _.map(parentData,function (obj) {
            var child = _.filter(allData,function (o) {
                o.checked = false;
                return o.VendorId == obj.VendorId;
            })
            obj.childList = child;
            return obj;
            //delete obj.child
        });
        deferred.resolve(jsonData);
    });
    return deferred.promise;
}

3、调用

$scope.$on("$ionicView.beforeEnter",function () {
    getList().then(function (response) {
        $rootScope.shoppingCartList = response;
    },function (error) {
        alert(123);
    });
});

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...