Promise 是什么
JAVASCRIPT 的异步操作
- JavaScript为检验表单而生
- 创造它的首要目标是操作DOM
- 异步的好处是避免页面卡死(冻结)
Promise详解
- promise是一个代理对象,他和原先要进行的操作并无关系
- 他通过引入一个回调,从而避免更多的回调
Promise 第一个简单实例:定时器
//新创建一个Promise实例
new Promise(
resolve => {
setTimeout(() = >{
resolve("hello");
},2000);
})
.then(value = >{
console.log(value + 'world');
})
Promise 第二个简单实例:定时执行
new Promise(resolve => {
setTimeout(()=> {
resolve("hello");
},2000);
}).then(value => {
console.log(value)
return new Promise( resolve => {
setTimeout( () => {
resolve("this")
},2000);
});
}).then(value => {
console.log(value + 'world');
})
//输出:
hello
this world
Promise 第三个简单实例:没有直接返回promise对象的情况
//如果没有直接返回promise对象的情况
new Promise(resolve => {
setTimeout(()=>{
resolve("hello");
},2000);
}).then(value => {
console.log(value)
(function(){
retrun new Promise(resolve =>{
setTimeout(() => {
console.log("nihao");
resolve("beautiful");
}, 1000);
})
}());
return false;
}).then(value => {
console.log(value + 'world');
})
/*输出
*hello
*false world
*nihao
/
错误处理
Promise会自动捕获内部异常,并交给rejected响应函数处理
例子:
new Promise((resolve,reject) => {
setTimeout( () => {
reject("bye");
},1000);
}).then(value => {
console.log(value);
},value => {
console.log('error:', value);
});
//输出
erro: bye
Promise常用函数
1.promise.all()
2.promise.map()
找到最大文件的算法 https://www.imooc.com/video/16622
3.实现队列