为什么在第一个箭头函数的流动代码中,我们将诺言解析值some data作为字符串获得,而在第二个代码中,我们得到Promise { 'some data' }



const resolveAfter2Seconds = ()=> {
         return new Promise(resolve => {
            setTimeout(function() {
                resolve("some data");
            }, 2000);}
        );
    };

    (async()=>{
        let prom=await resolveAfter2Seconds()
        console.log(prom)
    })();



    (async()=>{
        let prom=resolveAfter2Seconds()
        await prom
        console.log(prom)
    })();

最佳答案

因为await prom不会修改变量prom所指的内容,所以它仅等待其所指的承诺得以解决。 prom在您记录承诺时仍指该承诺。如果要用承诺的结果更新prom,则需要明确地执行以下操作:

prom = await prom;

09-28 13:14