Files
appium/sample-code/examples/node/helpers/promise-utils.js
2014-06-09 14:32:23 +08:00

51 lines
1.1 KiB
JavaScript

"use strict";
var Q = require('q'),
_ = require('underscore');
exports.each = function (fn) {
return function (els) {
var seq = _(els).map(function (el, i) {
return function () {
return fn(el, i);
};
});
// iterating
return seq.reduce(Q.when, new Q()).then(function () {
return els;
});
};
};
exports.filter = function (fn) {
return function (els) {
var seq = _(els).map(function (el, i) {
return function (filteredEls) {
return fn(el, i).then(function (isOk) {
if (isOk) filteredEls.push(el);
return filteredEls;
});
};
});
// iterating
return seq.reduce(Q.when, new Q([]));
};
};
exports.printNames = exports.each(function (el, i) {
return el.getAttribute('name').print(i + "--> ");
});
exports.filterDisplayed = exports.filter(function (el) {
return el.isDisplayed();
});
exports.filterWithName = function (name) {
return exports.filter(function (el) {
return el.getAttribute('name').then(function (_name) {
return _name === name;
});
});
};