2017-09-28 17:15:03来自分类 JavaScript
```javascript var array = [[4,'dasd'],[5,'dasd'],[1,'dasd'],[2,'dasd'],[3,'dasd'],[13,'dasd'],[23,'dasd']] var newarray = [] array.map(i => { let index = newarray.findIndex((j) => j[0] > i[0]) index === -1 ? newarray.push(i) : newarray.splice(index, 0, i) }); console.log(newarray) ```...
2016-12-07 22:12:00来自分类 JavaScript
* Promise.all 会等所有 Promise 执行完毕后,把结果放在数组里 * Promise.reduce 按顺序执行 * Promise.mapSeries 方法,这个方法和 Promise.map 类似,只不过是顺序执行的 * Promise.each 方法,和 Promise.mapSeries 方法类似,都是顺序执行,区别是,返回的数组不是所有 Promise 的结果,而是传入 Promise.each 方法的原始数据数组 ```javascript var Promise = require('bluebird'); var p1 = new Promise((resolve, reject) => { setTimeout(()=>{ resolve(1000) }, 1000); }); var p2 = new Promise((resolve, reject) => { setTimeout(()=>{ resolve(2000) }, 2000); }); var p3 = new Prom...
2016-12-07 22:12:00来自分类 JavaScript
# apply apply是一个非常好用的函数,可以让我们给一个函数预绑定多个参数并生成一个可直接调用的新函数,简化代码。 ```javascript async.apply(t.inc, 3); // 等价于 function(callback) { t.inc(3, callback); } ``` ```javascript var t = {} t.inc = function(n, callback, timeout) { timeout = timeout || 200; setTimeout(function() { callback(null, n+1); }, timeout); } t.fire = function(obj, callback, timeout) { timeout = timeout || 200; setTimeout(function() { callback(null, obj); }, timeout); } async.parallel([ fu...
2016-12-07 22:12:00来自分类 JavaScript
# auto async.auto(tasks, [callback]) auto用来处理有依赖关系的多个任务的执行 如果中途出错,则会把错误交给最终callback,执行完任务的传给最终callback。未执行完成的函数值被忽略 ```javascript async.auto({ getData: function (callback) { setTimeout(function(){ console.log('1.1: got data'); callback(null, 'mydata'); }, 300); }, makeFolder: function (callback) { setTimeout(function(){ console.log('1.1: made folder'); callback(null, 'myfolder'); }, 200); }, wr...
2016-12-07 22:12:00来自分类 JavaScript
# compose 创建一个包括一组异步函数的函数集合,每个函数会消费上一次函数的返回值。 ```javascript function fn1(n,callback){ log('1.1.f enter: ',n); setTimeout(function () { callback(null, n + 1); }, 10); } function fn2(n, callback) { log('1.1.g enter: ',n); setTimeout(function () { callback(null, n * 2); }, 10); } function fn3(n, callback) { log('1.1.h enter: ',n); setTimeout(function () { callback(null, n - 10); }, 10); } var fn = async.compose(fn1, fn2, fn3); fn(4, funct...
2016-12-07 22:12:00来自分类 JavaScript
```javascript var data = { aaa: [11,22,33], bbb: [44,55], ccc: 66 }; var keys = [ {name: 'aaa', delay: 300}, {name: 'bbb', delay: 100}, {name: 'ccc', delay: 200} ]; ``` # concat async.concat(coll, iteratee, [callback]) 将多个异步操作的结果合并为一个数组。 以并行方式对集合中各元素进行异步操作,然后把得到的结果合并为一个数组,传给最后的callback。 如果中途出错,则把错误以及已经完成的操作的结果交给最后callback。未执行完的则忽略。 ```javascript async.concat(keys, function(key,callback) { setTimeout(function() { callback(null, data[key.name]); }, key.d...
2016-12-07 22:12:00来自分类 JavaScript
```javascript var arr = [{ name: 'Jack', delay: 200 }, { name: 'Mike', delay: 100 }, { name: 'Freewind', delay: 300 }]; ``` # each async.each(coll, iterate, [callback]) 所有操作并发执行,且全部未出错,最终得到的err为undefined。注意最终callback只有一个参数err。 如果中途出错,则出错后马上调用最终的callback。其它未执行完的任务继续执行 ```javascript async.each(arr, (item, callback) => { setTimeout(() => { console.log(item.name); callback(null, item.name); }, item.delay); }, (err) => console.log(err)); ``` # eachS...
2016-12-07 22:12:00来自分类 JavaScript
```javascript var arr = [1,2,3,6]; ``` # every async.every(coll, iteratee, [callback]) 如果集合里每一个元素都满足条件,则传给最终回调的result为true,否则为false ```javascript async.every(arr, function(item, callback){ log('1.1 enter: ',item); setTimeout(function(){ log('1.1 handle: ',item); callback(null, item<=10); },100); }, function(result) { log('1.1 result: ', result); }); // 32.233> 1.1 result: true ``` # everySeries async.everySeries(coll, iteratee, callback) 串行 # everyLimit async...
2016-12-07 22:12:00来自分类 JavaScript
```javascript var arr = [1,2,3,6]; ``` # filter async.filter(coll, iteratee, [callback]) 并行执行,对arr进行筛选。 ```javascript async.filter(arr, function(item, callback) { log('1.1 enter: ' + item); setTimeout(function() { log('1.1 test: ' + item); callback(null, item>=3); }, 200); }, function(results) { log('1.1 results: ', results); }); // ==> results: [ 3, 4, 5 ] ``` # filterSeries async.filterSeries(coll, iteratee, [callback]) 串行执行,对arr进行筛选。 ```javascript async.f...
2016-12-07 22:12:00来自分类 JavaScript
```javascript var arr = [{ name:'Jack', delay:200 }, { name:'Mike', delay: 100 }, { name:'Freewind', delay:300 }, { name:'Test', delay: 50 }]; ``` # map async.map(coll, iteratee, [callback]) 对集合中的每一个元素,执行某个异步操作,得到结果。所有的结果将汇总到最终的callback里 - 并行执行。同时对集合中所有元素进行操作,结果汇总到最终callback里。如果出错,则立刻返回错误以及已经执行完的任务的结果,未执行完的占个空位 - 顺序执行。对集合中的元素一个一个执行操作,结果汇总到最终callback里。如果出错,则立刻返回错误以及已经执行完的结果,未执行的被忽略。 ##### 并行 ```javascript async.map(arr, function(item, callback) { log('1.1 enter: ' + item...