假设某些代码
// promise.js
let p = new Promise(() => { /* ... */ })
export default p
其中Promise
是ES6承诺。假设某些其他代码仅引用p
。该代码如何判断p
是否已解决?
// other.js
import p from './promise.js'
// console.log('p is resolved?', ______)
根据承诺是否得到解决,我们可以在空白处填写哪些内容会显示是真还是假?
答案 0 :(得分:14)
引用MDN文档:
按照设计,在不调用then()方法的情况下,不能从代码中同步检查promise的即时状态和值。
因此,您需要调用.then
方法。
答案 1 :(得分:9)
ES6 Promise构造函数没有可以告诉您promise的状态的属性。你需要做这样的事情:
import p from './promise.js'
var isResolved = false;
p.then(function() {
isResolved = true;
});
// ... At some point in the future.
console.log('p is resolved?', isResolved);
有一个名为PromiseState
的内部属性,但您无法访问它。 Here is the spec