<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>异步回调的理解</title>
</head>
<body>
</body>
<style>
body {
background-color: black;
color: white;
}
</style>
<script>
window.onload = function () {
console.log("欢迎来到promise训练营")
}
const pictureLoaded = function () {
alert("图片已经加载完成!")
console.log("图片已经加载完成!")
}
const loadPicture1 = function (rollback) {
setTimeout(() => { rollback() }, 6000)
}
const loadPicture2 = function (callback) {
return new Promise(res => {
setTimeout(() => { res("success") }, 6000)
}).then(res => { callback() }).catch(e => e);
}
const loadPicture3 = async function () {
await loadPicture2();
return 3;
}
const pictureAndVideoLoaded = function () {
alert("图片和视频已经加载完成")
}
const loadPictureAndVideo1 = function (pictureAndVideoLoaded) {
let loadedPicture = false;
let loadedVide = false;
setTimeout(() => {
loadedPicture = true;
if (loadedPicture && loadedVide) {
pictureAndVideoLoaded();
}
}, 5000)
setTimeout(() => {
loadedVide = true
if (loadedPicture && loadedVide) {
pictureAndVideoLoaded();
}
}, 7000)
}
const loadPictureAndVideo2 = function (pictureAndVideoLoaded) {
var p1 = new Promise(resolve => {
setTimeout(() => { resolve("图片加载好啦") }, 5000);
})
var p2 = new Promise(resolve => {
setTimeout(() => { resolve("视频加载好啦") }, 7000);
})
Promise.all([p1, p2]).then((res) => {
console.log(res);
pictureAndVideoLoaded();
})
}
const p1 = async function () {
return new Promise((res) => {
setTimeout(() => { res("图片加载好啦") }, 5000);
})
}
const p2 = async function (callback) {
const value = await p1();
console.log("等着1的结果:" + value);
setTimeout(() => callback(), 7000)
}
const loadMost1 = function () {
return new Promise(res => {
setTimeout(() => { res("a加载成功") }, 3000)
}).then(res => {
console.log(res);
return new Promise(res => {
setTimeout(() => { res("b加载成功了") }, 4000)
})
}).then(
res => {
console.log(res);
return new Promise(res => {
setTimeout(() => { res("c加载成功了") }, 5000)
})
}
).then(
res => {
console.log(res);
return new Promise(res => {
setTimeout(() => { res("d加载成功了") }, 6000)
})
}
).then(
res => {
console.log(res);
return 'over'
}
)
}
const loadMost2 = function () {
loadingA()
}
const loadingA = function () {
setTimeout(() => {
console.log("a加载好啦")
loadingB();
}, 3000)
}
const loadingB = function () {
setTimeout(() => {
console.log("b加载好啦")
loadingC();
}, 2000)
}
const loadingC = function () {
setTimeout(() => {
console.log("c加载好啦")
loadingD();
}, 2000)
}
const loadingD = function () {
setTimeout(() => {
console.log("d加载好啦")
}, 1000)
}
const loadingAny=function(msg,times,func){
setTimeout(()=>{
console.log(msg);
func();
},times)
}
const loadMost3=function(){
loadingAny("a加载好啦",3000,()=>{
loadingAny("b加载好啦",2000,()=>{
loadingAny("c加载好啦",1000,()=>{
loadingAny("d加载好啦",1000,()=>{console.log("所有的都加载好啦")})
})
})
})
}
loadMost3();
</script>
</html>