JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://code.angularjs.org/1.3.15/angular.min.js"></script>
<body ng-app="myApp">
<div ng-controller="MyCtrl"></div>
</body>
JavaScript
console.clear();
angular.module("myApp", [])
.controller("MyCtrl", ["$scope", "$window", "$timeout", "$q", function($scope, $window, $timeout, $q) {
var fn = function() {
var args = Array.prototype.slice.call(arguments);
debugger;
var tx = args.shift();
var i, promiseArray = [];
for(i=0;i<args.length;i++) {
promiseArray.push(args[i](tx));
}
for(i=0;i<10;i++) {
var deferred = $q.defer();
tx.executeSql("SELECT 2*? AS result", [i], (function(deferred) {
return function(tx, rs) {
deferred.resolve(rs.rows.item(0).result);
};
})(deferred));
promiseArray.push(deferred.promise);
}
return promiseArray;
};
var fn2 = function(tx) {
var deferred = $q.defer();
tx.executeSql("SELECT ? AS result", [-2], function(tx, rs) {
deferred.resolve(rs.rows.item(0).result);
});
return deferred.promise;
};
var db = $window.openDatabase("foo", "1.0", "fooDB", 1024);
//This works
db.transaction(function(tx) {
$q.all(fn(tx)).then(function(a) {
console.log("Result:", a);
});
});
//This too
db.transaction(function(tx) {
$q.all(fn(tx, fn2)).then(function(a) {
console.log("Result:", a);
});
});
}]);