18-1、then()

36 阅读1分钟
<script>
    // 1.什么时候执行
    // pending->fulfilled时,执行then的第一个回调函数
    // pending->rejected时,执行then的第二个回调函数

    // 2.执行后的返回值
    // then方法执行后返回一个新的Promise对象
    // const p = new Promise((resolve, reject) => {
    //     resolve();
    //     reject()
    // })
    // const p2 = p.then(
    //     () => { },
    //     () => { }
    // )
    //     .then()
    //     .then();
    // console.log(p, p2, p === p2);

    // 3.then方法返回的Promise对象的状态改变
    const p = new Promise((resolve, reject) => {
        // resolve();
        reject()
    })
    const p2 = p.then(
        () => {
            console.log('success');
        },
        () => {
            console.log('err');
            // 在then的回调函数中,return后面的东西,会用Promise包装一下
            // return undefined;
            // 等价于
            // return new Promise((resolve, reject) => {
            //     resolve(undefined);
            // })


            // return 123;
            // return new Promise((resolve, reject) => {
            //     resolve(123);
            // })

            // 默认返回的永远都是成功状态的 Promise 对象
            return new Promise((resolve, reject) => {
                reject('reason');
            })
        }
    ).then(
        data => {
            console.log('success2', data);

            return undefined;
            return new Promise(resolve => {
                resolve(undefined)
            })
        },
        err => {
            console.log('err2', err);
        }
    )

</script>