老师可以看看我的注释对吗

老师可以看看我的注释对吗

以及,老师可以把代码执行的每一步顺序标注一下嘛,谢谢老师

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在一开始作为形参传递进来了,所以在回调中可以调用,这样理解对吗

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕糖 2020-07-05 13:54:36

同学你好,如下,同学标的这个执行就是正确的哦,先调用了f()函数,返回proise然后调用了then。再往后都是一样的哦。

http://img1.sycdn.imooc.com//climg/5f016ae8093039cc07810068.jpg

祝学习愉快~

好帮手慕糖 2020-07-05 11:03:17

同学你好,关于同学的问题,回答如下:

1、注释这里,有一个小问题:

http://img1.sycdn.imooc.com//climg/5f01417a09d2436807000055.jpg

这里不重新调用f()也会生成一个promise实例。之后可以继续调用.then方法。因为.then方法可以自动返回一个promise实例实例哦。

不过在当前这个案例中,还是需要调用下的。因为返回的是新的promise实例,就不能使用原来promise实例中的计时器了。

如下,可以在计时器中添加一个输出。然后去掉.then中的f()调用,分别查看下效果。

http://img1.sycdn.imooc.com//climg/5f01427309a1e0db03500128.jpg

2、其他理解是对的哦。

如果我的回答帮助了你,欢迎采纳,祝学习愉快~

  • 提问者 hyperse #1
    好的,可是老师,可以帮忙标注一下代码的执行顺序嘛,我感觉上面跟下面代码是穿插执行的,所以有点混乱
    2020-07-05 12:11:57
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师