我听说Promise实例中有一些内部插槽。
[[PromiseState]]
[[PromiseResult]]
[[PromiseFulfillReactions]]
[[PromiseRejectReactions]]
[[PromiseIsHandled]]
无法查看其值。但是,ES6中有一个Proxy构造函数,可帮助使用get / set陷阱显示值。
当我们在普通对象中添加一些值时,可以做某事。但是,当将某些值放入[[PromiseResult]]内部插槽时,是否可以做些什么?
答案 0 :(得分:1)
不。内部插槽甚至可能不存在。它们是在内部定义JS行为的规范的一种方式。引擎不必实现这些。
如果您真正的问题是“如何同步检测承诺是否得以解决” ...
function didResolve(promise) {
let resolved;
promise.then(value => resolved = value);
return function check() { return resolved; };
}
const task = Promise.resolve(42);
const checker = didResolve(task);
console.log(checker()); // undefined
setTimeout(() => { console.log(checker()); /*42*/ });