当前位置: 首页 > news >正文

滨州网站建设有实力网络精准营销推广

滨州网站建设有实力,网络精准营销推广,东莞seo广告宣传,雷州网站这里写目录标题 异步事件循环宏任务微任务1. 执行顺序2. 分类 Promise代码输出1. promise.then执行时机2. 宏任务微任务的多轮次3. .then .catch会返回新的promise4. 返回任意一个非 promise 的值都会被包裹成 promise 对象5. .then .catch 的值不能是promise本身6. 值透传7. .… 这里写目录标题 异步事件循环宏任务微任务1. 执行顺序2. 分类 Promise代码输出1. promise.then执行时机2. 宏任务微任务的多轮次3. .then .catch会返回新的promise4. 返回任意一个非 promise 的值都会被包裹成 promise 对象5. .then .catch 的值不能是promise本身6. 值透传7. .finally8. 捕获错误9. promise.all和promise.race Async await1. async搭配promise2. async中抛出错误 作用域、变量提升、闭包变量提升1. 全局变量赋值给了一个局部变量2. Function 和 var 都会变量提升3. function的变量提升作用域闭包例一例二 异步事件循环 宏任务微任务 1. 执行顺序 先执行微任务再执行宏任务注意宏任务微任务的多轮次,每执行完一次宏任务后都要检查有没有可执行的微任务 2. 分类 宏任务setTimeout、setInterval、I/O 操作如文件读取、网络请求等、UI 渲染 微任务Promise 的 then、catch、finally、process.nextTickMutationObserver Promise代码输出 promise.then是微任务执行要等所有宏任务执行完并且promise内部状态发生变化状态改变后不会再更改 1. promise.then执行时机 script const promise new Promise((resolve, reject) {console.log(1);setTimeout(() {console.log(timerStart);resolve(success);console.log(timerEnd);}, 0);console.log(2); }); //由于Promise的状态此时还是pending所以promise.then先不执行 promise.then((res) {console.log(res); }); console.log(4); //最终输出1 2 4 timerStart timerEnd success /script2. 宏任务微任务的多轮次 script Promise.resolve().then(() {console.log(promise1);//进入第二轮宏任务const timer2 setTimeout(() {console.log(timer2)}, 0) }); const timer1 setTimeout(() {console.log(timer1)//进入第二轮微任务先执行Promise.resolve().then(() {console.log(promise2)}) }, 0) console.log(start); //输出 start promise1 timer1 promise2 timer2/scriptconsole.log(1);setTimeout(function() {console.log(2);process.nextTick(function() {console.log(3);})new Promise(function(resolve) {console.log(4);resolve();}).then(function() {console.log(5)}) }) process.nextTick(function() {console.log(6); }) new Promise(function(resolve) {console.log(7);resolve(); }).then(function() {console.log(8) })setTimeout(function() {console.log(9);process.nextTick(function() {console.log(10);})new Promise(function(resolve) {console.log(11);resolve();}).then(function() {console.log(12)}) }) //输出1 7 6 8 2 4 3 5 9 11 10 123. .then .catch会返回新的promise script Promise.resolve(1).then(res {console.log(res);//return 2包装为resolve(2) 进入下一个.thenreturn 2;}).catch(err {return 3;}).then(res {console.log(res);});//输出 1 2 /script4. 返回任意一个非 promise 的值都会被包裹成 promise 对象 script Promise.resolve().then(() {//这里会被.then捕获return new Error(error!!!) }).then(res {console.log(then: , res) }).catch(err {console.log(catch: , err) }) //输出then: Error: error!!! /script5. .then .catch 的值不能是promise本身 script const promise Promise.resolve().then(() {return promise; }) //进入死循环 promise.catch(console.err) /script6. 值透传 script//.then.catch传入非函数会发生值透传 Promise.resolve(1).then(2).then(Promise.resolve(3)).then(console.log)//输出1 /script7. .finally .finally()方法不管Promise对象最后的状态如何都会执行.finally()方法的回调函数不接受任何的参数也就是说你在.finally()函数中是无法知道Promise最终的状态是resolved还是rejected的.finally的返回值如果在没有抛出错误的情况下默认会是上一个Promise的返回值.finally 本质上是then方法的特例 8. 捕获错误 Promise.reject(err!!!)//在这里reject的错误直接被.then的err捕获而不是进入.catch.then((res) {console.log(success, res)}, (err) {console.log(error, err)}).catch(err {console.log(catch, err)})//输出error err!!! //无论是thne还是catch中只要throw 抛出了错误就会被catch捕获 //如果没有throw出错误就被继续执行后面的then Promise.resolve().then(() {console.log(1);throw Error; }).then(() {console.log(2); }).catch(() {console.log(3);throw Error; }).then(() {console.log(4); }).catch(() {console.log(5); }).then(() {console.log(6); }); //输出1 3 5 69. promise.all和promise.race function runAsync (x) {const p new Promise(r setTimeout(() r(x, console.log(x)), 1000))return p } //输出 1 2 3 [12 3] //所有输入的promise都成功解析后返回数组 Promise.all([runAsync(1), runAsync(2), runAsync(3)]).then(res console.log(res)) function runAsync (x) {const p new Promise(r setTimeout(() r(x, console.log(x)), 1000))return p } //输出 1 result:1 2 3 //promise.race只捕获第一个结果无论成功或失败且不再捕获 Promise.race([runAsync(1), runAsync(2), runAsync(3)]).then(res console.log(result: , res)).catch(err console.log(err))Async await async单独使用为同步搭配await实现异步可以理解为await后的语句放入new Promise中下一行及之后放入promise.then中 1. async搭配promise async function async1 () {console.log(async1 start);await new Promise(resolve {//new Promise立即执行但状态保持pending导致会暂停在这里console.log(promise1)//在这里执行resolve会使async1继续执行})console.log(async1 success);return async1 end } console.log(srcipt start) async1().then(res console.log(res)) console.log(srcipt end)2. async中抛出错误 async function async1 () {await async2();console.log(async1);return async1 success } async function async2 () {return new Promise((resolve, reject) {console.log(async2)//如果async函数中抛出了错误就会终止错误结果不会继续向下执行//如果想让其执行可以用catch捕获错误reject(error)}) } async1().then(res console.log(res))作用域、变量提升、闭包 变量提升 1. 全局变量赋值给了一个局部变量 var x y 1; 实际上这里是从右往左执行的首先执行y 1, 因为y没有使用var声明所以它是一个全局变量然后第二步是将y赋值给x讲一个全局变量赋值给了一个局部变量最终x是一个局部变量y是一个全局变量所以打印x是报错 (function(){var x y 1; })(); var z;console.log(y); // 1 console.log(z); // undefined console.log(x); // Uncaught ReferenceError: x is not defined2. Function 和 var 都会变量提升 var friendName World; (function() { //相当于这里多了一行var friendNameif (typeof friendName undefined) {var friendName Jack;console.log(Goodbye friendName);} else {console.log(Hello friendName);} })(); 3. function的变量提升 function fn1(){console.log(fn1) } var fn2fn1() fn2()fn2 function() {console.log(fn2) }fn2() //输出 //fn1 //Uncaught TypeError: fn2 is not a function //fn2作用域 function a() {var temp 10;function b() {console.log(temp); // 10}b(); } a();function a() {var temp 10;b(); } function b() {console.log(temp); // 报错 Uncaught ReferenceError: temp is not defined } a();闭包 例一 function fun(n, o) { //当传入实参多于形参时剩下的形参为undefinedconsole.log(o)return {fun: function(m){//返回对象再次进入fun,打印o//当作用域中没有n时向上作用域寻找return fun(m, n);}}; } //输出 //undefined 0 0 0 //undefined 0 1 2 //undefined 0 1 1 var a fun(0); a.fun(1); a.fun(2); a.fun(3); var b fun(0).fun(1).fun(2).fun(3); var c fun(0).fun(1); c.fun(2); c.fun(3);例二 解释 由于在匿名函数中又重新定义了函数g就覆盖了外部定义的变量g所以这里调用的是内部函数 g 方法返回为 true当一个布尔值参与到条件运算的时候true 会被看作 1, 而 false 会被看作 0。现在条件变成了 [] 0 的问题了当一个对象参与条件比较的时候它会被求值求值的结果是数组成为一个字符串[] 的结果就是 ‘’ 而 ‘’ 会被当作 0 所以条件成立 f function() {return true;}; g function() {return false;}; (function() { if (g() [] ![]) { f function f() {return false;}; function g() {return true;} } })(); console.log(f());
http://www.w-s-a.com/news/338141/

相关文章:

  • 门户网站想要微信登录怎么做湖南网站seo推广
  • 襄阳 网站建设管理系统网站
  • 重庆工程建设招标投标交易信息网广州外贸seo优化
  • 一个一起做网站东莞设计兼职网站建设
  • 杭州网站程序开发公司在哪个公司建设网站好
  • 网店的网站设计方案济南手机建站价格
  • 网站做了301重定向域名会自动跳转吗唐山地方志网站建设
  • 学校网站建设说明书海南省建设执业资格注册管理中心网站
  • 东莞哪家网站建设好网站风格设定
  • 自驾游网站模板搭建wordpress步骤
  • wordpress视频网站上传视频提升学历是什么意思
  • 江西省城乡建设厅建设网站浙江建设
  • 网站联系我们页面临平做网站
  • 如何用网站做cpa交互比较好的网站
  • 一家只做特卖的网站wordpress修改模板教程
  • 与恶魔做交易的网站成都到西安高铁票价
  • 太原网站制作哪家便宜长春昆仑建设股份有限公司网站
  • 优质做网站价格设计手机商城网站建设
  • 高校网站建设制度无锡网站建设排名
  • 做网站的软件wd的叫啥无锡公司网站建设服务
  • 网站建设一般需要多久网站服务器基本要素有哪些
  • 大连开发区网站开发公司免费网站建设哪个好?
  • 关于建设门户网站的通知海曙区建设局网站
  • 韩国建设部网站温州企业网站制作
  • 苏州网站建设优化贵州网站建设lonwone
  • 网站建设与推广方案模板网站建设教程搭建浊贝湖南岚鸿给力
  • 网站建设内部下单流程图昆明网站制作公司
  • 手机网站焦点图在线外链推广
  • 做静态页面的网站中国建设银行河南省分行网站
  • 镇平县两学一做专题网站佛山家居网站全网营销