为什么在第一个箭头函数的流动代码中,我们将诺言解析值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;