背景
javascript是一种单线程模式执行的语言,它最早就是运行在浏览器端的脚本语言,用来做页面的交互,而做页面交互就要有很多的DOM操作,DOM操作就最好是单线程的,否则就会有很复杂的多线程同步问题,同一时间多个操作去操作同一个DOM,浏览器就不知道怎么谁操作的了。所以javascript最早就设计成了单线程模式。
Promise
链式调用
- 注意promise的链式调用,可以一直.then;
- 之后then的回调函数的参数为之前回调函数的return值;
- 当return新的promise时,这个then就为这个promise的then;
let promise = new Promise(function(resolve, reject){
resolve('foo');
})
promise.then(res => {
console.log('1',res);
return new Promise(function(resolve, reject){
reject('错误');
})
})
.then(res => {
console.log('2', res);
return '2的成功'
}, err => {
console.log('2err', err);
return '2的失败'
} )
.then(res => {
console.log('3', res);
})
.catch(err => {
console.log('last', err)
});
打印结果
1 foo
2err 错误
3 2的失败
Promise一些方法(并行)
Promise.all() 所有结束才会结束返回
Promise.race() 第一个结束就会结束返回,(一般处理超时)
generator 了解 yield多次返回