如何判断承诺是否已解决?

时间:2016-03-01 06:40:42

标签: javascript promise

假设某些代码

// 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?', ______)

根据承诺是否得到解决,我们可以在空白处填写哪些内容会显示是真还是假?

2 个答案:

答案 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