Promise
Posted liangcheng11
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise相关的知识,希望对你有一定的参考价值。
// 回调
const ajax = function (cb) {
setTimeout(()=>{
cb();
});
};
// 基本用法
const ajax = function() {
const res = ‘‘;
return new Promise((resolve, reject) => {
if (flag) {
resolve(res);
} else {
reject(res);
}
});
};
const resolve = (res) => {
// toddo
}
const reject = (res) => {
// todo
}
ajax.then(resolve, resolve).catch(err => {
console.log(err);
});
1. 链式
// promise
const ajax = function() {
const res = ‘‘;
return new Promise((resolve, reject) => {
resolve(res);
});
};
const resolve = (res) => {
return new Promise((resolve, reject) => {
resolve();
});
}
ajax.then(resolve).then(() => {
// todo
});
2. 群发——Promise.all(FnAry);
// 所有图片加载完再添加到页面
function loadImg(src){
return new Promise((resolve,reject)=>{
let img=document.createElement(‘img‘);
img.src=src;
img.onload=function(){
resolve(img);
}
img.onerror=function(err){
reject(err);
}
})
}
function showImgs(imgs){
imgs.forEach(function(img){
document.body.appendChild(img);
})
}
Promise.all([
loadImg(‘http://i4.buimg.com/567571/df1ef0720bea6832.png‘),
loadImg(‘http://i4.buimg.com/567751/2b07ee25b08930ba.png‘),
loadImg(‘http://i2.muimg.com/567751/5eb8190d6b2a1c9c.png‘)
]).then(showImgs)
3. 在多个请求中,只处理最先返回响应的——Promise.race(FnAry)
// 有一个图片加载完就添加到页面
function loadImg(src){
return new Promise((resolve,reject)=>{
let img=document.createElement(‘img‘);
img.src=src;
img.onload=function(){
resolve(img);
}
img.onerror=function(err){
reject(err);
}
})
}
function showImgs(img){
let p=document.createElement(‘p‘);
p.appendChild(img);
document.body.appendChild(p)
}
Promise.race([
loadImg(‘http://i4.buimg.com/567571/df1ef0720bea6832.png‘),
loadImg(‘http://i4.buimg.com/567751/2b07ee25b08930ba.png‘),
loadImg(‘http://i2.muimg.com/567751/5eb8190d6b2a1c9c.png‘)
]).then(showImgs)
以上是关于Promise的主要内容,如果未能解决你的问题,请参考以下文章
Typescript编译器无法从Promise resolve调用中推断类型