来自分类 JavaScript2020-10-27 11:07:16
相当于 $(el).before('html' | element)
```javascript
el.insertAdjacentHTML('beforeBegin', 'html');
el.insertAdjacentElement('beforebegin', element)
```
相当于 $(el).prepend('html' | element)
```javascript
el.insertAdjacentHTML('afterBegin', 'html');
el.insertBefore(element, el.firstChild)
```
相当于 $(el).append('html' | element)
```javascript
el.insertAdjacentHTML('beforeEnd', 'html');
el.appendChild(element)
```
相当于 $(el).after('html' | element)
```javascript
el.insertAdjacentHTML('afterEnd', 'html')...
来自分类 JavaScript2017-09-28 17:15:03
```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)
```...
来自分类 JavaScript2016-12-07 22:12:00
```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...
来自分类 JavaScript2016-12-07 22:12:00
```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...
来自分类 JavaScript2016-12-07 22:12:00
# 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...
来自分类 JavaScript2016-12-07 22:12:00
```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...
来自分类 JavaScript2016-12-07 22:12:00
# parallel
async.parallel(tasks, [callback])
* 并行执行多个函数,每个函数的值将按函数声明的先后顺序汇成一个数组,传给最终callback。
* 如果中途有个函数出错,则将该err和已经完成的函数值汇成一个数组,传给最终的callback。还没有执行完的函数的值将被忽略,但要在最终数组中占个位置
* 以json形式传入tasks,最终results也为json
```javascript
async.parallel([
(cb) => {
setTimeout(() => {
cb(null, 100);
}, 100);
},
(cb) => {
setTimeout(() => {
cb(null, 200);
}, 200);
},
(cb) => {
setTimeout(() => {
cb(null, 300);
},...
来自分类 JavaScript2016-12-07 22:12:00
# whilst
whilst(test, fn, callback)
中途出错。出错后立刻调用第三个函数。
```javascript
var count = 0;
async.whilst(
function () { return count < 5; },
function (callback) {
count++;
setTimeout(function () {
callback(null, count);
}, 1000);
},
function (err, n) {
// 5 seconds have passed, n = 5
}
);
```
# doWhilst
doWhilst(fn, test, callback)
doWhilst交换了fn,test的参数位置,先执行一次循环,再做test判断。 和javascript中do..while语法一致。
```javascript
var count4 = 0;
async...
来自分类 JavaScript2016-12-07 22:12:00
* 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...
来自分类 JavaScript2016-12-07 22:12:00
# waterfall
* 按顺序依次执行一组函数, 每个函数产生的值,都将传给下一个。
* 所有函数正常执行,每个函数的结果都将变为下一个函数的参数
* 中途有函数出错,其err直接传给最终callback,结果被丢弃,后面的函数不再执行。
* 以json形式传入tasks,将不会被执行
```javascript
async.waterfall([
(cb) => cb(null, 3),
(n, cb) => {
console.log(n); // => 3
cb(null, 4);
},
(n, cb) => {
console.log(n); // => 4
cb(null, 5);
}
], (err, result) => {
console.log(err);
console.log(result);
});
// => result: 5
```...