在 JavaScript 中,Promise 是一种常见的异步编程模式。当一个 Promise 对象被解决(resolve)时,它会返回一个值,而这个值是存在于 Promise 对象的内部属性 [[PromiseValue]] 中的。
理解 [[PromiseValue]]
[[PromiseValue]] 属性是 Promise 内部用来存储解决(resolve)结果的属性,只能通过内部机制或者特定的方法才能够访问到,比如使用 then() 方法或者 await 关键字等。
由于 [[PromiseValue]] 属性是 Promise 对象的内部属性,因此它并不属于 JavaScript 的公共 API,也就是说不能直接获取它。但是我们可以通过调试工具,在控制台中输出 Promise 对象来查看它的 [[PromiseValue]] 属性。
如何获取 [[PromiseValue]]
使用 then() 方法
then() 方法是 Promise 对象原型上的方法,用来注册 Promise 解决(resolve)和拒绝(reject)时的回调函数。当 Promise 被解决时,then() 方法会将解决结果作为参数传递给回调函数,并返回一个新的 Promise 对象。
const promise = new Promise(resolve => { resolve('Hello, world!'); }); promise.then(value => { console.log(value); // "Hello, world!" });
在 then() 方法中,我们可以获取到 Promise 解决(resolve)时的值,这个值就是存放在 [[PromiseValue]] 属性中的。
使用 async/await
async/await 是一种异步编程语法糖,能够让我们写出更加简洁易懂的异步代码。在使用 async/await 时,我们可以通过 await 关键字来等待 Promise 对象被解决,并获取到解决结果。
-- -------------------- ---- ------- ----- -------- --------- - ----- ------- - --- --------------- -- - --------------- --------- --- ----- ----- - ----- -------- ------------------- -- ------- ------- - ----------
这里我们使用了 async/await 来获取 Promise 解决(resolve)时的值,同样也是通过 [[PromiseValue]] 属性来实现的。
总结
- [[PromiseValue]] 是 Promise 内部用来存储解决(resolve)结果的属性。
- [[PromiseValue]] 并不属于 JavaScript 的公共 API,不能直接获取它。
- 我们可以使用 then() 方法或者 async/await 来获取 Promise 解决(resolve)时的值,它们都是通过 [[PromiseValue]] 属性来实现的。
学习 Promise 是前端开发中非常重要的一部分,掌握好 Promise 的使用方法可以让我们更加轻松地处理异步操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/27744