80

状況

Promiseを使用する次の関数があります。

var getDefinitions = function() {
    return new Promise(function(resolve) {
        resolve(ContactManager.request("definition:entities"));
    });
}

var definitions = getDefinitions()

の内容definitionsは次のとおりです。

Promise {
    [[PromiseStatus]]: "resolved",
    [[PromiseValue]]: child
}

PromiseValueプロパティに直接アクセスするとundefinedが返されます

var value = definitions.PromiseValue; // undefined

質問

二重括弧の[[ ]]意味と の値を取得するにはどうすればよいですか[[PromiseValue]]

4

7 に答える 7

0

manpageを読むと、次のことがわかります。

設計上、Promise の瞬時の状態と値は、then()メソッドを呼び出さずにコードから同期的に検査することはできません。

デバッグを支援するために、promise オブジェクトを手動で検査する場合にのみ、コードからアクセスできない特別なプロパティとしてより多くの情報を表示できます(これは、より洗練された言語またはデバッガーのサポートがないため、現在、プロパティ名をランダム化することによって実装されています) )。

鉱山を強調します。だから、やりたいことができない。より良い質問は、なぜそのような約束の状態にアクセスする必要があるのですか?

于 2015-03-07T16:15:21.377 に答える
-1

これでうまくいくと思います。

(async () => {
  let getDefinitions = await ( () => {
    return new Promise( (resolve, reject) => {
      resolve(ContactManager.request("definition:entities"));
    });
  })();
)();
于 2016-12-31T14:31:28.633 に答える