一开始的链式调用错误写法
来源:2-39 Then(异步操作)

水里有条鱼
2020-04-26
一开始的链式调用方式,实际上是错误的,并不能产生依次执行的效果,只是他们的异步顺序刚好是对的而已。
看下面例子:
function log (str, time) {
return new Promise((res) => {
time < 10 && (time = time * 1000);
setTimeout(function () {
console.log(str);
res(str);
}, time)
})
}
log('1', 3).then(log('2', 2)).then(log('3', 1));
// 上面的写法 实际上等于 log('1', 3).then().then();log('2', 2);log('3', 1)
// 所以执行结果是3,2,1
log('1', 3).then(() => log('2', 2)).then(() => log('3', 1)); // 这样写才是对的,输出1,2,3
这种需要讲清楚啊,错误的例子只会让新手更难理解,还不如不举例
写回答
2回答
-
慕UI9336467
2020-05-22
对我也发现这是不同的,第一种方式是从运行开始1s 第一次打印,2s第二次打印,3s第三次打印,
第二种方式则是从运行开始 1s第一次打印,等2s第二次打印, 等3s 第三次打印。
第二种是正常的吗
00 -
慕粉1926294646
2020-04-27
同学这块就是对比着来讲的呢,是很难理解吗
012020-04-27
相似问题