一开始的链式调用错误写法

来源: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 第三次打印。

第二种是正常的吗

0
0

慕粉1926294646

2020-04-27

同学这块就是对比着来讲的呢,是很难理解吗

0
1
水里有条鱼
会让人造成困扰,我还以为那种写法能产生依次执行的效果,感觉不可能啊,试验了一下果然如此
2020-04-27
共1条回复

再学JavaScript ES(6-10)全版本语法大全

前端无门槛学习,从ES6到ES10,一套课程掌握JS最新语法

1182 学习 · 336 问题

查看课程