老师可以看看我的注释对吗
以及,老师可以把代码执行的每一步顺序标注一下嘛,谢谢老师
function f(cb){ setTimeout(function(){ // 如果不这样写,调用f函数时,没有传递参数,执行cb()这句代码会报错,到执行项目无法执行下去。 // // cb && cb()这种写法, 是为了保证传入cb之后,才执行cb(),如果没有传入cb, 就不会执行cb(),防止报错。 cb && cb(); //如果cb存在(存在的话必须是函数,否则会报错)就去调用cb方法 },1000); } //回调地狱 // f(function(){ // console.log(1); // f(function(){ // console.log(2); // f(function(){ // console.log(3); // f(function(){ // console.log(4); // f(function(){ // console.log(5); // f(function(){ // console.log(6); // }) // }) // }) // }) // }) // }) //Promise //方法 用于请求数据(模拟) function f(){ return new Promise(resolve => { //Promise对象接收的这个形参resolve代表成功时候要做的事 setTimeout(function(){ resolve(); //1s后调用resolve函数。就是下面的匿名函数,可以在想去调用resolve()的时候去调用就可以了 },1000); }) } //.then方法是每个promise实例都具有的, f() //调用函数f,返回一个新的promise对象 .then(function(){ //.then后面的匿名函数就是上面的形参resolve console.log(1); return f(); //必须调用f(),才可以返回一个promise实例,下面才可以调用.then方法 }) .then(function(){ console.log(2); return f(); }) .then(function(){ console.log(3); return f(); })
函数f里面的resolve参数和resolve()方法都对应.then后面的匿名函数对吗?然后当调用f的时候,返回一个promise实例,所以可以调用then方法,,then中的匿名函数就是f函数里面一秒后执行的resolve(),这个resolve在一开始作为形参传递进来了,所以在回调中可以调用,这样理解对吗
20
收起
正在回答 回答被采纳积分+1
2回答
4.Vue与React高级框架开发
- 参与学习 人
- 提交作业 239 份
- 解答问题 10739 个
本阶段带你深入前端开发的肌理,通过ES6基础知识和前端主流高级框架的学习,助你快速构建企业级移动webAPP应用,进入职场的终极battle
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星