prompt.confirm = function (/* msg, options, callback */) { var args = Array.prototype.slice.call(arguments), msg = args.shift(), callback = args.pop(), opts = args.shift(), vars = !Array.isArray(msg) ? [msg] : msg, RX_Y = /^[yt]{1}/i, RX_YN = /^[yntf]{1}/i; function confirm(target, next) { var yes = target.yes || RX_Y, options = mixin({ description: typeof target === 'string' ? target : target.description||'yes/no', pattern: target.pattern || RX_YN, name: 'confirm', message: target.message || 'yes/no' }, opts || {}); prompt.get([options], function (err, result) { next(err ? false : yes.test(result[options.name])); }); } async.rejectSeries(vars, confirm, function(result) { callback(null, result.length===0); }); };
exports['rejectSeries'] = function(test){ async.rejectSeries([3,1,2], function(x, callback){ setTimeout(function(){callback(x % 2);}, x*25); }, function(results){ test.same(results, [2]); test.done(); }); };
function filter (callback) { if (!ifMissing) { return callback(null, fileInfos); } function exists (fileInfo, callback) { fs.exists(fileInfo.dest, callback); } async.rejectSeries(fileInfos, exists, function (fileInfos) { callback(null, fileInfos); }); },
.on('end', function () { async.rejectSeries(files, function (file, finished) { galen(file, finished); }, function (errors) { if (errors && errors.length > 0) { done("Galen reported failed tests: " + (errors.map(function(f) { return f.relative; }).join(", "))); } else { done(); } }); });
// 31.559> 1.4 test: 2 // 31.559> 1.4 test: 3 // 31.559> 1.4 test: 4 // 31.559> 1.4 test: 5 // 31.569> 1.4 results: [ 1, 2 ] /** * 串行执行,对arr进行筛选。 */ // 1.3 async.rejectSeries(arr, function(item, callback) { log('1.5 enter: ' + item); setTimeout(function() { log('1.5 handle: ' + item); callback(item>=3); }, 200); }, function(results) { log('1.5 results: ', results); }); //43.592> 1.5 enter: 1 //43.799> 1.5 handle: 1 //43.800> 1.5 enter: 2 //44.004> 1.5 handle: 2 //44.007> 1.5 enter: 3 //44.210> 1.5 handle: 3 //44.211> 1.5 enter: 4 //44.412> 1.5 handle: 4 //44.413> 1.5 enter: 5 //44.614> 1.5 handle: 5 //44.616> 1.5 results: [ 1, 2 ]