/** * js是单线程语言,弱类型类型 */ /**同步 * 代码自上而下一行一行的执行 且执行完才会去执行下一行代码 */ var a = 10; console.log(a,'a'); var b = 20; console.log(b,'b'); /**异步:setTimeOut setInterval、Promise、事件 */ // setInterval(()=>{ // console.log("这个事件"); // },1000) /**回调函数:同步或者异步 * 定义:一个函数(A)作为实参传给另一个函数(B),并在B中被调用,则为回调函数 */ const test1 = () => { document.write("hello") } setTimeout(test1,1000); /**回调地狱 */ // setTimeout(()=>{ // console.log(2); // setTimeout(()=>{ // console.log(1); // setTimeout(()=>{ // console.log(3); // },1000) // },1000) // },1000) /** * Promise 异步编程 * 将异步的操作 用同步的流程表达出来 * 三种状态: pending 进行中 * reject 已失败 * resolve/fulfilled 已成功 * */ /**第一种 */ // new Promise((resolve,reject) => { // // resolve 成功时调用 // // reject 失败时调用 // setTimeout(()=>{ // console.log(4); // // 只会调用第一个方法 后续则不生效 // resolve(); // reject(); // },1000) // }).then(()=> { // console.log("成功") // }).catch(()=>{ // console.log("失败") // }) /**第二种 */ // let back = new Promise((resolve,reject)=>{ // setTimeout(()=>{ // console.log(5) // resolve(); // },1000) // }) // back.then(()=>{ // console.log("111") // }) // back.catch(()=>{ // console.log("222") // }) var newPromise = new Promise((resolve,reject)=>{reject()}) newPromise.then(()=>{ console.log(newPromise,"输出") }) newPromise.catch(()=>{ console.log(newPromise,"catch") }) // new Promise((resolve,reject) => { // setTimeout(()=>{ // console.log(1); // resolve(); // },1000) // }).then(()=>{ // new Promise(()=>{ // }) // }).catch(()=>{ // }) let p1 = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log(1); reject(); },1000) }) let p2 = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log(2); reject(); },1200) }) let p3 = new Promise((resolve,reject)=>{ setTimeout(()=>{ console.log(3); resolve(); },800) }) /** * Promise.all判断多个promise * 当传入的都成功 则成功 */ // Promise.all([p1,p2,p3]).then(()=>{ // console.log("成功了"); // }).catch(()=>{ // console.log("失败了"); // }) /** * Promise.race 第一个执行的成功则成功 */ Promise.race([p1,p2,p3]).then(()=>{ console.log("成功了"); }).catch(()=>{ console.log("失败了"); })