Promise练习题

点击查看代码
    //下面代码的输出结果是什么?
    // 40
    const p1 = new Promise((resolve) => {
        setTimeout(() => {
            resolve('resolve3');
            console.log('timer1')
        }, 0)
        resolve('resovle1');
        resolve('resolve2');
    }).then(res => {
        console.log(res)
        setTimeout(() => {
            console.log(p1)
        }, 1000)
        // return 1
    }).finally(res => {
        console.log('finally', res)
    })
    // 39
    const async1 = async () => {
        console.log('async1');


        setTimeout(() => {
            console.log('timer1')
        }, 2000)


        await new Promise(resolve => {
            console.log('promise1')
        })
        console.log('async1 end')
        return 'async1 success'
    }
    console.log('script start');
    async1().then(res => console.log(res));
    console.log('script end');
    Promise.resolve(1)
        .then(2)
        .then(Promise.resolve(3))
        .catch(4)
        .then(res => console.log(res))
    setTimeout(() => {
        console.log('timer2')
    }, 1000)

    // 38
    const first = () => (new Promise((resolve, reject) => {
        console.log(3);
        let p = new Promise((resolve, reject) => {
            console.log(7);
            setTimeout(() => {
                console.log(5);
                resolve(6);
                console.log(p)
            }, 0)
            resolve(1);
        });
        resolve(2);
        p.then((arg) => {
            console.log(arg);
        });
    }));

    first().then((arg) => {
        console.log(arg);
    });
    console.log(4);

    // 37
    async function async1() {
        try {
            await Promise.reject('error!!!')
        } catch (e) {
            console.log(e)
        }
        console.log('async1');
        return Promise.resolve('async1 success')
    }
    async1().then(res => console.log(res))
    console.log('script start')
    /**
     * 'script start'
     * 'error!!!'
     * 'async1'
     * 'async1 success'
    */
    //    36
    async function async1() {
        await async2();
        console.log('async1');
        return 'async1 success'
    }
    async function async2() {
        return new Promise((resolve, reject) => {
            console.log('async2')
            reject('error')
        })
    }
    async1().then(res => console.log(res))
    /**
    */
    //35
    async function testSometing() {
        console.log("执行testSometing");
        return "testSometing";
    }
    async function testAsync() {
        console.log("执行testAsync");
        return Promise.resolve("hello async");
    }
    async function test() {
        console.log("test start...");
        const v1 = await testSometing();
        console.log(v1);
        const v2 = await testAsync();
        console.log(v2);
        console.log(v1, v2);
    }
    test();
    var promise = new Promise(resolve => {
        console.log("promise start...");
        resolve("promise");
    });
    promise.then(val => console.log(val));
    console.log("test end...");
    /**
     */
    //34
    async function async1() {
        console.log("async1 start");
        await async2();
        console.log("async1 end");
    }
    async function async2() {
        console.log("async2");
    }
    console.log("script start");
    setTimeout(function () {
        console.log("setTimeout");
    }, 0);
    async1();
    new Promise(function (resolve) {
        console.log("promise1");
        resolve();
    }).then(function () {
        console.log("promise2");
    });
    console.log('script end')
    /**
     * "script start"
     * "async1 start"
     * "async2"
     * "promise1"
     * 'script end'
     * "async1 end"
     * "promise2"
     * "setTimeout"
     * 
    */
    //33
    async function async1() {
        console.log('async1 start');
        await new Promise(resolve => {
            console.log('promise1')
            resolve('promise resolve')
        })
        console.log('async1 success');
        return 'async1 end'
    }
    console.log('srcipt start')
    async1().then(res => {
        console.log(res)
    })
    new Promise(resolve => {
        console.log('promise2')
        setTimeout(() => {
            console.log('timer')
        })
    })
    /**
     * 'srcipt start'
     * 'async1 start'
     * 'promise1'
     * 'promise2'
     * 'async1 success'
     * 'async1 end'
     * 'timer'
    */
    //32
    async function async1() {
        console.log('async1 start');
        await new Promise(resolve => {
            console.log('promise1')
        })
        console.log('async1 success');
        return 'async1 end'
    }
    console.log('srcipt start')
    async1().then(res => console.log(res))
    console.log('srcipt end')
    /**
     * 'srcipt start'
     * 'async1 start'
     * 'promise1'
     * 'srcipt end'
    */
    //31
    async function fn() {
        // return await 1234​
        // 等同于​
        return 123
    }
    fn().then(res => console.log(res))
    //30
    async function async1() {
        console.log("async1 start");
        await async2();
        console.log("async1 end");
        setTimeout(() => {
            console.log('timer1')
        }, 0)
    }

    async function async2() {
        setTimeout(() => {
            console.log('timer2')
        }, 0)
        console.log("async2");
    }
    async1();
    setTimeout(() => {
        console.log('timer3')
    }, 0)
    console.log("start")
    /**
     * "async1 start"
     * "async2"
     * "start"
     * "async1 end"
     * 'timer2'
     * 'timer3'
     * 'timer1'
    */
    //29
    async function async1() {
        console.log("async1 start");
        await async2();
        console.log("async1 end");
    }
    async function async2() {
        setTimeout(() => {
            console.log('timer')
        }, 0)
        console.log("async2");
    }
    async1();
    console.log("start")
    /**
     * "async1 start"
     * "async2"
     * "start"
     * "async1 end"
     * 'timer'
    */
    //28
    async function async1() {
        console.log("async1 start");
        await async2();
        console.log("async1 end");
    }
    async function async2() {
        console.log("async2");
    }
    async1();
    console.log('start')
    /**
     * "async1 start"
     * "async2"
     * 'start'
     * "async1 end"
    */
    //27
    function runAsync(x) {
        const p = new Promise(r =>
            setTimeout(() => r(x, console.log(x)), 1000)
        );
        return p;
    }
    function runReject(x) {
        const p = new Promise((res, rej) =>
            setTimeout(() => rej(`Error: ${x}`, console.log(x)), 1000 * x)
        );
        return p;
    }
    Promise.race([runReject(0), runAsync(1), runAsync(2), runAsync(3)])
        .then(res => console.log("result: ", res))
        .catch(err => console.log(err));

    //26
    function runAsync(x) {
        const p = new Promise(r => setTimeout(() => r(x, console.log(x)), 1000))
        return p
    }
    function runReject(x) {
        const p = new Promise((res, rej) => setTimeout(() => rej(`Error: ${x}`, console.log(x)), 1000 * x))
        return p
    }
    Promise.all([runAsync(1), runReject(4), runAsync(3), runReject(2)])
        .then(res => console.log(res))
        .catch(err => console.log(err))
    /**
     * 1
     * 3
     * 2
     * Error:2
     * 4
    */

    //25
    function runAsync(x) {
        const p = new Promise(r => setTimeout(() => r(x, console.log(x)), 1000))
        return p
    }
    Promise.all([runAsync(1), runAsync(2), runAsync(3)])
        .then(res => console.log(res))
    /**
     * 1
     * 2
     * 3
     * [1,2,3]
    */

    //24
    function promise1() {
        let p = new Promise((resolve) => {
            console.log('promise1');
            resolve('1')
        })
        return p;
    }
    function promise2() {
        return new Promise((resolve, reject) => {
            reject('error')
        })
    }
    promise1()
        .then(res => console.log(res))
        .catch(err => console.log(err))
        .finally(() => console.log('finally1'))

    promise2()
        .then(res => console.log(res))
        .catch(err => console.log(err))
        .finally(() => console.log('finally2'))
    //23
    Promise.resolve('1')
        .then(res => {
            console.log(res)
        })
        .finally(() => {
            console.log('finally')
        })
    Promise.resolve('2')
        .finally(() => {
            console.log('finally2')
            return '我是finally2返回的值'
        })
        .then(res => {
            console.log('finally2后面的then函数', res)
        })
    //22
    Promise.resolve()
        .then(function success(res) {
            throw new Error('error!!!')
        }, function fail1(err) {
            console.log('fail1', err)
        }).catch(function fail2(err) {
            console.log('fail2', err)
        })

    //21
    Promise.resolve(1)
        .then(2)
        .then(Promise.resolve(3))
        .then(console.log)

    //19
    const promise = Promise.resolve().then(() => {
        return promise;
    })
    promise.catch(console.err)

    //18
    Promise.resolve().then(() => {
        return new Error('error!!!')
    }).then(res => {
        console.log("then: ", res)
    }).catch(err => {
        console.log("catch: ", err)
    })

    //17
    const promise = new Promise((resolve, reject) => {
        setTimeout(() => {
            console.log('timer')
            resolve('success')
        }, 1000)
    })
    const start = Date.now();
    promise.then(res => {
        console.log(res, Date.now() - start)
    })
    promise.then(res => {
        console.log(res, Date.now() - start)
    })
    //16
    Promise.reject(1)
        .then(res => {
            console.log(res);
            return 2;
        })
        .catch(err => {
            console.log(err);
            return 3
        })
        .then(res => {
            console.log(res);
        });

    //15
    Promise.resolve(1)
        .then(res => {
            console.log(res);
            return 2;
        })
        .catch(err => {
            return 3;
        })
        .then(res => {
            console.log(res);
        });

    //14
    const promise = new Promise((resolve, reject) => {
        reject("error");
        resolve("success2");
    });
    promise
        .then(res => {
            console.log("then1: ", res);
        }).then(res => {
            console.log("then2: ", res);
        }).catch(err => {
            console.log("catch: ", err);
        }).then(res => {
            console.log("then3: ", res);
        })

    //13
    const promise = new Promise((resolve, reject) => {
        resolve("success1");
        reject("error");
        resolve("success2");
    });
    promise
        .then(res => {
            console.log("then: ", res);
        }).catch(err => {
            console.log("catch: ", err);
        })

    //12
    const promise1 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve("success");
            console.log("timer1");
        }, 1000);
        console.log("promise1里的内容");
    });
    const promise2 = promise1.then(() => {
        throw new Error("error!!!");
    });
    console.log("promise1", promise1);
    console.log("promise2", promise2);
    setTimeout(() => {
        console.log("timer2");
        console.log("promise1", promise1);
        console.log("promise2", promise2);
    }, 2000);

    //11
    const promise1 = new Promise((resolve, reject) => {
        setTimeout(() => {
            resolve('success')
        }, 1000)
    })
    const promise2 = promise1.then(() => {
        throw new Error('error!!!')
    })
    console.log('promise1', promise1)
    console.log('promise2', promise2)
    setTimeout(() => {
        console.log('promise1', promise1)
        console.log('promise2', promise2)
    }, 2000)
    /**
     * 'promise1' Promise{<pending>}​
     * 'promise2' Promise{<pending>}​
     * test5.html:102 Uncaught (in promise) Error: error!!! at test.html:102​
     * 'promise1' Promise{<resolved>: "success"}​
     * 'promise2' Promise{<rejected>: Error: error!!!}
    */
    //10
    Promise.resolve().then(() => {
        console.log('promise1');
        const timer2 = setTimeout(() => {
            console.log('timer2')
        }, 0)
    });
    const timer1 = setTimeout(() => {
        console.log('timer1')
        Promise.resolve().then(() => {
            console.log('promise2')
        })
    }, 0)
    console.log('start');
    /**
     * 'start'
     * 'promise1'
     * 'timer1'
     * 'promise2'
     * 'timer2'
    */
    //9-1
    setTimeout(() => {
        console.log('timer1');
        setTimeout(() => {
            console.log('timer3')
        }, 0)
    }, 0)
    setTimeout(() => {
        console.log('timer2')
    }, 0)
    console.log('start')
    //9-2
    setTimeout(() => {
        console.log('timer1');
        Promise.resolve().then(() => {
            console.log('promise')
        })
    }, 0)
    setTimeout(() => {
        console.log('timer2')
    }, 0)
    console.log('start')
    //8
    const promise = new Promise((resolve, reject) => {
        console.log(1);
        setTimeout(() => {
            console.log("timerStart");
            resolve("success");
            console.log("timerEnd");
        }, 0);
        console.log(2);
    });
    promise.then((res) => {
        console.log(res);
    });
    console.log(4);
    /**
     * 1
     * 2
     * 4
     * "timerStart"
     * "timerEnd"
     * "success"
    */
    //7
    console.log('start')
    setTimeout(() => {
        console.log('time')
    })
    Promise.resolve().then(() => {
        console.log('resolve')
    })
    console.log('end')
    //6
    const fn = () =>
        new Promise((resolve, reject) => {
            console.log(1);
            resolve("success");
        });
    console.log("start");
    fn().then(res => {
        console.log(res);
    });
    //2
    const promise = new Promise((resolve, reject) => {
        console.log(1);
        resolve('success')
        console.log(2);
    });
    promise.then(() => {
        console.log(3);
    });
    console.log(4);
    //5
    const fn = () => (new Promise((resolve, reject) => {
        console.log(1);
        resolve('success')
    }))
    fn().then(res => {
        console.log(res)
    })
    console.log('start')
    //4
    const promise1 = new Promise((resolve, reject) => {
        console.log('promise1')
        resolve('resolve1')
    })
    const promise2 = promise1.then(res => {
        console.log(res)
    })
    console.log('1', promise1);
    console.log('2', promise2);
    /**
     * 'promise1'
     * 1,Promise{<fulfilled>:'resolve1'}
     * 2,Promise{<pending>}
     * 'resolve1'
    */
    //3
    const promise = new Promise((resolve, reject) => {
        console.log(1);
        console.log(2);
    });
    promise.then(() => {
        console.log(3);
    });
    console.log(4);
    //1
    const promise1 = new Promise((resolve, reject) => {
        console.log('promise1')
    })
    console.log('1', promise1);
    //+1
    var pr1 = new Promise((resolve, reject) => {
        resolve('pr1');
    });
    var pr2 = new Promise((resolve, reject) => {
        resolve('pr2');
    });
    var pr3 = new Promise((resolve, reject) => {
        reject('pr3');
    });
    Promise.all([pr1, pr2, pr3].map(p => p.catch(e => '出错后返回的值')))
        .then(values => {
            console.log(values);
        }).catch(err => {
            console.log(err);
        })

    //+2
    Promise.reject('err!!!')
        .then((res) => {
            console.log('success', res)
        }, (err) => {
            console.log('error', err)
        }).catch(err => {
            console.log('catch', err)
        })
    //+3
    Promise.reject('err!!!')
        .catch(err => {
            console.log('catch', err)
        })
        .then((res) => {
            console.log('success', res)
        }, (err) => {
            console.log('error', err)
        })
    //+4


posted @ 2026-01-14 15:47  独孤明人  阅读(0)  评论(0)    收藏  举报